A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.导入相关jar包

    拷贝hibernate-release-5.0.7.Final目录下lib/required目录下所有jar包
   
2.导入数据库驱动jar包

3.导入日志相关jar包

    log4j-1.2.16.jar
    slf4j-api-1.6.1.jar
    slf4j-log4j12-1.7.2.jar

4.拷贝hibernate-release-5.0.7.Final\lib\optional\c3p0下所有jar包
   
    c3p0-0.9.2.1.jar
    hibernate-c3p0-5.0.7.Final.jar
    mchange-commons-java-0.2.3.4.jar

5.将hibernate-release-5.0.7.Final目录下project/etc/log4j.properties文件拷贝到工程src目录下

6.创建javabean和数据库表的映射关系的配置文件

    a)在javabean目录下创建 类名.hbm.xml eg: Customer.hbm.xml(注意:该文件要和javabean类Customer在同一层级目录下)

    b)在配置文件中配置javabean和数据库表的关系

            
[XML] 纯文本查看 复制代码
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
        <!-- package属性代表javabean所在的包 -->
        <hibernate-mapping package="com.b3a4a.domain">
            <!--
                name    实体类的全名
                table   表的名称
                catalog 数据库名称
            -->
            <class name="Customer" table="t_customer" catalog="db_hibernate_study">
                <!--
                    id它是用于描述主键
                        name      实体类中那个属性对应的是主键
                        column    数据库表中哪一列是主键
                -->
                <id name="id" column="id">
                    <!-- 主键生成策略 -->
                    <generator class="native"></generator>
                </id>
                <!--
                    使用property来描述属性与字段的对应关系
                        name   实体类中的属性
                        column 实体类中属性对应数据库表中的列
                        length 该列的长度限制
                -->
                <property name="name" column="name" length="20"></property>
                <property name="address" column="address" length="50"></property>
                <property name="sex" column="sex" length="20"></property>
            </class>
        </hibernate-mapping> 

        
    注意:该配置文件的约束可以在hibernate-core-5.0.7.Final.jar中的org.hibernate包下的hibernate-mapping-3.0.dtd文件中复制

7.在项目的src目录下创建hibernate核心配置文件hibernate.cfg.xml(关于属性的配置可以参考project/etc/hibernate.properties)

[XML] 纯文本查看 复制代码
	<?xml version="1.0" encoding="UTF-8"?>
	<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

	<hibernate-configuration>

		<session-factory>
			<!-- 配置关于数据库连接的四个项 driverClass url username password -->
			<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
			<property name="hibernate.connection.url">jdbc:mysql:///db_hibernate_study</property>
			<property name="hibernate.connection.username">root</property>
			<property name="hibernate.connection.password">root</property>

			<!-- 设置连接提供者 -->
			<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
			<!-- c3p0连接池的配置 -->
			<property name="hibernate.c3p0.max_size">20</property> <!-- 最大连接数 -->
			<property name="hibernate.c3p0.min_size">5</property> <!-- 最小连接数 -->
			<property name="hibernate.c3p0.timeout">120</property> <!-- 超时 -->
			<property name="hibernate.c3p0.idle_test_period">3000</property> <!-- 空闲连接 -->

			<!-- 可以将向数据库发送的sql显示出来 -->
			<property name="hibernate.show_sql">true</property>
			<!-- 格式化sql -->
			<property name="hibernate.format_sql">true</property>

			<!-- hibernate的方言 -->
			<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

			<!-- 自动创建表 -->
			<property name="hibernate.hbm2ddl.auto">update</property>

			<!-- 用于设置事务提交方式 -->
			<property name="hibernate.connection.autocommit">false</property>

			<!-- 设置seesion和线程绑定 需要配合SessionFactory的getCurrentSession()使用 -->
			<property name="hibernate.current_session_context_class">thread</property>

			<!-- 配置hibernate的映射文件所在位置 -->
			<mapping resource="com/b3a4a/domain/Customer.hbm.xml" />
		</session-factory>

	</hibernate-configuration>	


注意:该配置文件的约束可以在hibernate-core-5.0.7.Final.jar中的org.hibernate包下的hibernate-configuration-3.0.dtd

8.使用hibernate操作数据库
单元测试

[Java] 纯文本查看 复制代码
   @Test
    public void modifyCustomerTest() {
        // 创建一个Customer
        Customer c = new Customer();
        c.setName("张三");
        c.setAddress("北京");
        c.setSex("男");

        // 使用hibernate的api来完成将customer信息保存到mysql中操作
        Configuration config = new Configuration().configure(); // 加载hibernate.cfg.xml
        SessionFactory sessionFactory = config.buildSessionFactory();
        Session session = sessionFactory.openSession(); // 相当于得到一个Connection。
        // 开启事务
        Transaction transaction = session.beginTransaction();
       
        //--------------------------操作数据库-----------------------
        //-----------添加操作-------------
        //session.save(c);
        //--------------------------------
        //-----------查询操作-------------
        //查询一条数据
        //Customer c = session.load(Customer.class, 1);
        //查询多条数据
        //Query query = session.createQuery("from Customer"); // 这里的from Customer不是sql语句,是HQL,这里的Customer代表的Customer类
        //List<Customer> list = query.list();
        //--------------------------------
        //-----------修改操作-------------
        //Customer c = session.get(Customer.class, 2);
        //c.setName("王五");
        //session.update(c);
        //--------------------------------
        //-----------删除操作-------------
        //Customer c = session.get(Customer.class, 1);
        //session.delete(c);   
        //--------------------------------
        //-----------------------------------------------------------
       
        // 事务提交
        transaction.commit();
        session.close();
        sessionFactory.close();
    }

1 个回复

倒序浏览

回帖奖励 +1

好详细~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马