Hibernate实战_笔记13(切换回Hibernate接口)
来源:互联网 发布:mysql安装失败 编辑:程序博客网 时间:2024/06/05 07:12
切换到Hibernate接口
决定用Hibernate作为JPA持久化的提供程序有几个原因:首先,Hibernate是一个很好的JPA实现,它提供许多不影响代码的选项。例如可以在JPA配置中启用Hibernate的二级数据高速缓存,并透明地提升应用的性能和可量测性,而不需要动任何代码。其次,必要时可以使用原生的Hibernate映射或API。但是这里我们要说明,需要的时候,你如何能够可以在JPA应用中使用Hibernate API。显示,把Hibernate API导入代码中使得把代码移植到一个不同的JPA提供程序变得更困难了。因此,正确地隔离这部分代码变得尤其重要,或者至少用文档说明你为什么和何时使用过一个原生的Hibernate特性。
你可以从它们对应的JPA接口退回到Hibernate API,获得Configuration、SessionFactory,必要时甚至是Session。
注意,下载JBoss Community(找了好久的啊)
下载地址:http://sourceforge.net/projects/jboss/?source=directorypackage cn.jbit.ejbjpa.test;import java.sql.Connection;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.ejb.Ejb3Configuration;import org.hibernate.ejb.HibernateEntityManager;import org.hibernate.ejb.HibernateEntityManagerFactory;public class Test2 {public static void main(String[] args) {Ejb3Configuration cfg = new Ejb3Configuration();EntityManagerFactory emf = cfg.buildEntityManagerFactory();// 使用Hibernate原生ConfigurationConfiguration hcfg = cfg.getHibernateConfiguration();HibernateEntityManagerFactory hibemf = (HibernateEntityManagerFactory) emf;// 使用Hibernate原生SessionFactorySessionFactory sessionFactory = hibemf.getSessionFactory();EntityManager em = emf.createEntityManager();// 使用Hibernate原生SessionHibernateEntityManager hibem = (HibernateEntityManager) em;Session session = hibem.getSession();// 方法2// Session session2 = (Session) hibem.getDelegate();// 极少情况下,能够从Hibernate Session退出到简单的JDBC接口// Connection jdbcConnection = session.connection();}}这最后一个选项有一些警告:不允许你关闭从Hibernate中获得的JDBC Connection——它会自动进行。
直接访问JDBC连接的一种更好更安全的方法是通过Java EE5.0中的资源注入。在一个EJB、EJB监听器、servlet、servlet过滤器甚至JavaServer Faces backing bean(JSF)中,注解一个字段或者设置方法,像下面这样:
@Resource(mappedName="java:/BdqnDS") DataSource ds;目前为止,假设你是在一个没有涉及遗留应用程序代码(或者现有的数据库Schema)的新Hibernate或者新JPA项目上进行。现在转换一下视角,考虑一个自底而上的开发过程。在这样一个场景中,你或许想要自动地从现有的数据库Schema中反射工程所需要创建的东西。
1 0
- Hibernate实战_笔记13(切换回Hibernate接口)
- Hibernate实战_笔记3
- Hibernate实战_笔记10
- Hibernate实战_笔记7(Ant)
- Hibernate实战_笔记1(Hibernate基础理论)
- Hibernate实战_笔记2(Hibernate范未不匹配问题)
- Hibernate实战_笔记5(Hibernate、EJB3、JPA)
- Hibernate实战_笔记6(第一个Hibernate项目)
- Hibernate实战_笔记34(映射枚举、实现EnhanceUserType接口)
- Hibernate实战_笔记4(ORM概念)
- Hibernate实战_笔记8(Ant设置Schema导出)
- Hibernate实战_笔记11(EJB容器JBoss)
- Hibernate实战_笔记12(JPA内嵌EJB)
- Hibernate实战_笔记14(反向工程)
- Hibernate实战_笔记16(分析领域模型)
- Hibernate实战_笔记17(持久化实体类)
- Hibernate实战_笔记19(实现映射之XDoclet)
- Hibernate实战_笔记21(创建动态的应用程序)
- Linux部署Java应用Too many open files解决方案
- 练练正则
- 高级字符驱动程序操作(poll机制)
- 函数参数列表为空和void的区别
- AOMDV协议中的路由表rt
- Hibernate实战_笔记13(切换回Hibernate接口)
- 动态数组vector和List
- Linux C一站式学习习题答案 剪刀石头布
- ASP.NET 生成分页HTML标签
- Part 3. Classes and Data Abstraction
- POJ 1723 SOLDIERS
- java.lang.ClassNotFoundException: Didn't find class "*****Activity" on path: /data/app/*******.apk
- A20,陀螺仪LIS3LV02DQ
- DKIM安装