Hibernate配置过程

1、先建立一个Web项目,导入Hibernate必备的jar包

2、在数据库中创建表 

CREATE TABLE `cst_customer` (
  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
  PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

3、编写实体类   略略略

4、编写由实体类到数据库的表映射文件。(xxx.nbm.xml)

   其中重要的元素有:

        DOCTYPE:hibernate-core-5.0.7.Final.jar 中的hibernate-mapping-3.0.dtd找到该声明

      ①hibernate-mapping

      ② class(name、table)   

      ③id(name、clumn、generator)

      ④property(name、column、type、length)

   属性类似于id,但是不同的是id作为zhu

<?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">
<hibernate-mapping>
    <!-- 建立类与表的映射 -->
    <class name="com.jjxy.hibernate.Customer" table="cst_customer">
        <!-- 建立类中的属性与表中的主键对应 -->
        <id name="cust_id" column="cust_id" >
            <!-- 主键的生成策略 -->
            <generator class="native"/>
        </id>
        <!-- 建立类中的普通的属性和表的字段的对应 -->
        <property name="cust_name" column="cust_name" length="32" />
        <property name="cust_source" column="cust_source" length="32"/>
        <property name="cust_industry" column="cust_industry"/>
        <property name="cust_level" column="cust_level"/>
        <property name="cust_phone" column="cust_phone"/>
        <property name="cust_mobile" column="cust_mobile"/>
    </class>
</hibernate-mapping>

5、编写核心配置文件hibernate.cfg.xml

       其中重要元素有:

      DOCTYPE:hibernate-core-5.0.7.Final.jar中的hibernate-configuration-3.0.dtd找到该声明

      连接数据库配置:可从下载的hibernate中的project\etc\hibernate.properties寻找

      指定方言:根据所用的数据库来指定

      关联hbm的配置文件:通过mapping的resource属性将对象的映射加入到Hibernate的配置文件中

      可选配置:打印SQL语句、配置C3P0连接池 -->

<?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>
		<!--连接数据库配置-->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">0000</property>
		<!-- 配置Hibernate的方言 -->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!-- 可选配置================ -->
		<!-- 打印SQL -->
		<property name="hibernate.show_sql">true</property>
		<!-- 格式化SQL -->
		<property name="hibernate.format_sql">true</property>
		<!-- 自动创建表 -->
		<!--
			none		:不使用hibernate的自动建表
		sessionFactory.close();做测试把工厂关闭
			create		:如果数据库中已经有表,删除原有表,重新创建,如果没有表,新建表。(测试)
			create-drop	:如果数据库中已经有表,删除原有表,执行操作,删除这个表。如果没有表,新建一个,使用完了删除该表。(测试)
			update		:如果数据库中有表,使用原有表,如果没有表,创建新表(更新表结构)
									        	例如:更改表中的字段的名,会添加新的一个属性
			validate		:如果没有表,不会创建表。只会使用数据库中原有的表。(校验映射和表结构)。
												例如:如果属性错误,测试会报错
		-->
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<!-- 自己 配置C3P0连接池 -->
		<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!--在连接池中可用的数据库连接的最少数目 -->
		<property name="c3p0.min_size">5</property>
		<!--在连接池中所有数据库连接的最大数目  -->
		<property name="c3p0.max_size">20</property>
		<!--设定数据库连接的过期时间,以秒为单位,
		如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
		<property name="c3p0.timeout">120</property>
		 <!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
		<property name="c3p0.idle_test_period">3000</property>
		<!--引入配置文件-->
		<mapping resource="com/jjxy/hibernate/Customer.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

6、基本配置结束,可以编写测试类。

所用的资料来源于黑马程序员教学课件,自己写着总结一遍

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章