hibernate4.0+版本和3.0+版本的区别总结
2个回答
2017-05-07
展开全部
1.使用hibernate.properties配置文件
以下配置的信息可以不用写在传统的hibernate.cfg.xml中了,可以写在hibernate.properties配置文件中。
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/hibernate
hibernate.connection.password=root
hibernate.connection.username=root
hibernate.connection.pool_size=100
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.format_sql=true
其中在3.3+版本中连接MySQL数据库只需要指明MySQLDialect即可。在4.1+版本中可以指出MySQL5Dialect。
2.SessionFactory对象的buildSessionFactory方法
4.1+版本中不带参数的buildSessionFactory()已经被废除,取而代之的是buildSessionFactory(ServiceRegistry ServiceRegistry)
为此我们采用以下方法:
public class HibernateTest {
private static SessionFactory sf = null;
@BeforeClass
public static void beforeClass(){
Configuration cfg = new Configuration().configure();
ServiceRegistryBuilder srb = new ServiceRegistryBuilder();
//默认读取hibernate.properties里面的配置信息
sf = cfg.buildSessionFactory(srb.buildServiceRegistry());
}
@AfterClass
public static void afterClass(){
sf.close();
}
这里有两点需要注意
1)若使用XML配置文件的方式配置实体类:需要在代码中手动加入resource文件
(在hibernate.cfg.xml中配置已经无效<mapping resource="cn/ntt/china/model/Student.hbm.xml"/>)
例:cfg.addResource("cn/ntt/china/model/Student.hbm.xml");//须指明全路径
2)若使用注解方式:与原来3.3+版本一样在需要在hibernate.cfg.xml中加入配置即可
例:<mapping class="cn.ntt.china.model.Teacher"/>
另外org.hibernate.cfg.AnnotationConfiguration;(Deprecated. All functionality has been moved to Configuration)
这个注解读取配置的class已经废弃,现在读取配置不需要特别注明是注解。
为了适应JPA规范,Hibernate4.1+版本中推荐使用annotation配置。
所以在引进jar包时把requested里面的包全部引进来就已经包含了annotation必须包了。
3.二级缓存配置
原来3.3+:
<property name="cache.use_query_cache">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
现在4.1+:
<property name="cache.use_query_cache">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
Hibernate学到现在算到告一段落。现在回想下Hibernate的核心思想其实就是把数据库中表与表的关系的操作,转化封装为java对象与对象的操作!那为什么要这样做呢?
原因很简单这样做符合我们日常面向对象编程的习惯,并且简化持久层操作的代码。
sun为这个思想制定了一套规范,即JPA!可见在不久的将来Java持久化操作要被JPA统一。
以下配置的信息可以不用写在传统的hibernate.cfg.xml中了,可以写在hibernate.properties配置文件中。
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=jdbc:mysql://localhost:3306/hibernate
hibernate.connection.password=root
hibernate.connection.username=root
hibernate.connection.pool_size=100
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.show_sql=true
hibernate.format_sql=true
其中在3.3+版本中连接MySQL数据库只需要指明MySQLDialect即可。在4.1+版本中可以指出MySQL5Dialect。
2.SessionFactory对象的buildSessionFactory方法
4.1+版本中不带参数的buildSessionFactory()已经被废除,取而代之的是buildSessionFactory(ServiceRegistry ServiceRegistry)
为此我们采用以下方法:
public class HibernateTest {
private static SessionFactory sf = null;
@BeforeClass
public static void beforeClass(){
Configuration cfg = new Configuration().configure();
ServiceRegistryBuilder srb = new ServiceRegistryBuilder();
//默认读取hibernate.properties里面的配置信息
sf = cfg.buildSessionFactory(srb.buildServiceRegistry());
}
@AfterClass
public static void afterClass(){
sf.close();
}
这里有两点需要注意
1)若使用XML配置文件的方式配置实体类:需要在代码中手动加入resource文件
(在hibernate.cfg.xml中配置已经无效<mapping resource="cn/ntt/china/model/Student.hbm.xml"/>)
例:cfg.addResource("cn/ntt/china/model/Student.hbm.xml");//须指明全路径
2)若使用注解方式:与原来3.3+版本一样在需要在hibernate.cfg.xml中加入配置即可
例:<mapping class="cn.ntt.china.model.Teacher"/>
另外org.hibernate.cfg.AnnotationConfiguration;(Deprecated. All functionality has been moved to Configuration)
这个注解读取配置的class已经废弃,现在读取配置不需要特别注明是注解。
为了适应JPA规范,Hibernate4.1+版本中推荐使用annotation配置。
所以在引进jar包时把requested里面的包全部引进来就已经包含了annotation必须包了。
3.二级缓存配置
原来3.3+:
<property name="cache.use_query_cache">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
现在4.1+:
<property name="cache.use_query_cache">true</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
Hibernate学到现在算到告一段落。现在回想下Hibernate的核心思想其实就是把数据库中表与表的关系的操作,转化封装为java对象与对象的操作!那为什么要这样做呢?
原因很简单这样做符合我们日常面向对象编程的习惯,并且简化持久层操作的代码。
sun为这个思想制定了一套规范,即JPA!可见在不久的将来Java持久化操作要被JPA统一。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询