Hibernate3 和Hibernate4 在配置文件上的区别

时间:2024-01-03 15:24:26

在使用hibernate之前要首先对hibernate进行一些基础的配置信息,像映射文件XXX.hbm.xml  XXX代表当前的domain的模型类名

 <?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com._520it.day01._01_hello.domain">
<!-- 映射关系 -->
<class name="User" table="t_user">
<id name="id" column="uid">
<generator class="native"/>
</id>
<property name="name" column="uname"/>
<property name="salary" column="usalary"/>
<property name="hiredate" column="uhiredate"/>
</class>
</hibernate-mapping>

下一步配置hibernate.cfg.xml文件

Hibernate3 在配置的时候,需要创建一个hibernate.cfg.xml文件,然后配置session-factory,把连接数据库的基本信息都以属性的形式罗列出来

 <!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 和value中不能有空格的出现--> 
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 连接数据库的驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 连接数据库的url -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<property name="hibernate.connection.username">root1</property>
<property name="hibernate.connection.password">admin1</property>
       
<!-- 是否显示sql语句 -->
<property name="hibernate.show_sql">true</property> <!-- 关联映射文件 -->
<mapping resource="com/_520it/day01/_01_hello/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

而在Hibernate4中,官方建议在另外创建一个hibernate.properties文件,在这个配置文件里,存放和数据库连接的基本信息

即:把上述文件中的对应的参数在这里写出来,同样不要有空格的出现

 hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
hibernate.dialect=org.hibernate.dialect.MySQLMyISAMDialect
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql:///hibernate
hibernate.connection.username=root1
hibernate.connection.password=admin1

这个时候在原来的hibernate.cfg.xml文件中就只剩下了关联映射文件的配置信息

 <!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- 当用这种方式的时候需要配置一个hibernate.properties文件 -->
<hibernate-configuration>
<session-factory>
<!-- 关联映射文件 -->
<mapping resource="com/_520it/day01/_01_hello/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

相比之下,hibernate3中的所有信息都在一个配置文件中,比较集中,结构清晰,hibernate4中,文件分开进行配置,便于管理,以后如果想要添加多个映射文件,也只需要在bibernate.cfg.xml文件中进行添加就好了,不用再去管数据库的连接配置文件

在hibernate3中创建sessionFactory

 //1.创建配置对象
Configuration config = new Configuration();
//2.读取配置文件
config.configure();
//3.创建sessionFactory对象
SessionFactory sessionFactory = config.buildSessionFactory();
//4.获取session对象
Session session =sessionFactory.openSession();

但是这个方法,官方已经不建议使用,目前依然可以使用

在hibernate4中,这个方法需要在创建sessionFactory的时候传入一个registy的参数

//1.创建配置对象
Configuration config = new Configuration();
//2.读取配置文件
config.configure();
//3.创建serviceRegistry对象
ServiceRegistry registry = new StandardServiceRegistryBuilder().build();
//4.创建sessionFactory对象
SessionFactory sessionFactory = config.buildSessionFactory(registry);
//5.获取session对象
Session session =sessionFactory.openSession();

以上两种方法都可以使用,仅凭个人喜好