首页 > 其他 > 详细

Hibernate实战_笔记13(切换回Hibernate接口)

时间:2014-03-10 19:18:07      阅读:572      评论:0      收藏:0      [点我收藏+]

切换到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=directory
package 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原生Configuration
		Configuration hcfg = cfg.getHibernateConfiguration();

		HibernateEntityManagerFactory hibemf = (HibernateEntityManagerFactory) emf;
		// 使用Hibernate原生SessionFactory
		SessionFactory sessionFactory = hibemf.getSessionFactory();

		EntityManager em = emf.createEntityManager();
		// 使用Hibernate原生Session
		HibernateEntityManager 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中反射工程所需要创建的东西。

Hibernate实战_笔记13(切换回Hibernate接口),布布扣,bubuko.com

Hibernate实战_笔记13(切换回Hibernate接口)

原文:http://blog.csdn.net/com185272358/article/details/20923059

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!