hibernate4.3.11怎么创建sessionfactory
hibernate框架随着版本的不断升级创建SessionFactory对象的方式也在不断的变化。
1、4.0之前我记得是如下这样:
Java代码
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
2、4.3之前如下这样:
Java代码
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
3、4.3的新用法如下这样:
Java代码
Configuration configuration = new Configuration().configure();
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties());
StandardServiceRegistryImpl registry = (StandardServiceRegistryImpl) builder.build();
SessionFactory sessionFactory = configuration.buildSessionFactory(registry);
Hibernate注解加载实体类文件
注解加载实体类文件代码如下:
.bird.user.entity;?
import?javax.persistence.Entity;
import?javax.persistence.Table;
import?javax.persistence.Id;
@Entity
@Table(name?=?"user")
public?class?User?{?
???private?int??id???????????;????
???@Id?
???public?int?getId()?{
????????return?id;
????}?
????public?void?setId(int?id)?{
????????this.id?=?id;
????}?
}
如果不用注解?,需要在spring.xml中增加如下代码。
?<property?name="mappingResources">
??????<list>
???????<value&/bird/user/entity/User.hbm.xml</value>
??????</list>
????</property>
spring 配置sessionfactory时class的两个类的区别是什么? ...
LocalSessionFactoryBean:读取Hibernate XML文件来获得映射的信息。
Example:
<bean id="mySessionFactory"
class=&.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource"/>
<property name="mappingResources">
<list>
<value>product.hbm.xml</value>
</list>
</property>
</bean>
AnnotationSessionFactoryBean:LocalSessionFactoryBean的子类。
读取实体类的注解来获得映射的信息。
Example:
<bean id="sessionFactory" class=&.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>test.package.Foo</value>
<value>test.package.Bar</value>
</list>
</property>
</bean>
或者扫描包下面的类
<bean id="sessionFactory" class=&.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="packagesToScan" value="test.package"/>
</bean>
整合ssh怎么自动生成所需的表?
在
??
?????????????
?????????????????
???????????
?????????????
?????????????????
???????????????
?????????????????????
??????????????????????.hibernate.dialect.MySQLDialect??
?????????????????????
???????????????????true
???????????????????
???????????????????update
???????????????
???????????
???????????
<.bjsxt.po
???hibernate5怎么创建sessionfactory
要创建SessionFactory , 首先要创建Configuration 对象。
这个对象就是去读取hibernate 的一些配置信息。
默认状况下, hibernate会到 classPath 目录下加载hibernate.cfg.xml 文件。
这里延续上一篇的例子:
[Hibernate系列—] 1. 下载与试用Hibernate(MySQL与Oracle 配置)
在Eclipse 中进行开发。
这个配置文件的方式可以有多种, 可以是xml , 可以是properties , 也可以直接在代码中写配置。
方式1. 在src 目录下放入 hibernate.cfg.xml, 类似上篇的例子
方式2. 在 src 目录下放入 hibernate.properties
内容如下:
[html] view plaincopy在CODE上查看代码片派生到我的代码片
.hibernate.dialect.MySQLDialect
02.hibernate.connection.driver_.mysql.jdbc.Driver
03.hibernate.connection.url=jdbc:mysql://localhost:3306/test
04.hibernate.connection.username=root
05.hibernate.connection.password=123456
06.#hibernate.hbm2ddl.auto=create
可以看出, 这种方式无法添加 User.hbm.xml 的配置, 所以可以在代码中添加:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
01.Configuration configuration = new Configuration().addResource(/oscar999/Usr.hbm.xml");
方式3. 可以直接在代码中进行设置, 类似
[java] view plaincopy在CODE上查看代码片派生到我的代码片
01.Configuration configuration = new Configuration().addResource(/oscar999/Usr.hbm.xml")
02. .setProperty("hibernate.connection.driver_class",.mysql.jdbc.Driver")
03. .setProperty("hibernate.connection.url", "jdbc:mysql://localhost:3306/test")
04. .setProperty("hibernate.connection.username", "root")
05. .setProperty("hibernate.connection.password", "123456")
06. .setProperty("hibernate.dialect",.hibernate.dialect.MySQLDialect")
07. .setProperty("hibernate.hbm2ddl.auto", "update");
也可以通过
[java] view plaincopy在CODE上查看代码片派生到我的代码片
01.Configuration configuration = new Configuration().oscar999.Usr.class)
添加映射文件。
一般状况下, 添加 hibernate.cfg.xml 会比较常用, .properties 和 .xml 也可以并存。
除此之外, 如果不想使用默认的文件名, 也可以这样:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
01.File file = new File("/oscar999/myhibernate.xml");
02.Configuration config = new Configuration();
03.config.configure(file);
SessionFactory 对象的创建
Configuration 创建完成之后, 接下来就是创建 SessionFactory 了。
在Hibernate 3中,创建SessionFactory 的方式是:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
01.SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
但是在, Hibernate 4 中, 这种方法已经过时了。
目前推荐的使用方式是:
[java] view plaincopy在CODE上查看代码片派生到我的代码片
01.ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
02. .applySettings(configuration.getProperties()).build();
03.SessionFactory sessionFactory = configuration
04. .buildSessionFactory(serviceRegistry);
至于为什么要使用这种方式, 可以参考:
/post/hibernate_orm_service_registry
session 的使用
sessionFactory 有了, 接下来就简单了,直接贴一个例子
[java] view plaincopy在CODE上查看代码片派生到我的代码片
01.Configuration configuration = new Configuration().oscar999.Usr.class);
02.ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
03. .applySettings(confi guration.getProperties()).build();
04.SessionFactory sessionFactory = configuration
05. .buildSessionFactory(serviceRegistry);
06.Session session = sessionFactory.openSession();
07.session.beginTransaction();
08.session.save(new Usr("uesr3"));
09.session.getTransaction()mit();
10.session.close();
11.sessionFactory.close();