Hibernate的XML和annotation两种方式简单例子
2016-12-21 10:12
225 查看
Hibernate概述:
ORM的全称Object/RelationMapping,对象/关系数据库映射。可以理解是一种规范,基本特征是完成面向对象的编程语言到关系数据库的映射。
Hibernate是一个面向Java环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于Sql的关系模型数据库结构中去。
Hibernate中的底层依然是基于JDBC的,因此在应用程序中使用Hibernate执行持久化时一定少不了JDBC的驱动
下面小例子XML方式:
1.建立类Student,就是相当于一个POJO类。这个类主要的作用就是一个简单类,用于数据库表的字段的映射。
2.这个普通的类还不具有持久化操作的能力,为了使其具备持久化操作的能力,这个方式采用的是XML的方式Student.hbm.xml
3.以上的XML文件持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据表列之间的对应关系。对于连接数据库的类型等通用的信息需要Hibernate的配置信息,配置信息需要指定的配置文件。hibernate.cfg.xml
4.进行测试
SessionFactory:这是Hibernate关键的对象,它是单个数据库映射关系经过编译后的内存镜像,它也是线程安全。它是生成Session的工厂,本身依赖ConnectionProvider。该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据库可以提供可选的二级缓存。
Session:它是应用程序与持久化之间的操作的单线程对象。它也是Hibernate持久化操作的关键对象,所有的持久化对象必须在Session管理下才可以进行持久化操作。此对象的生存期很短。底层封装了JDBC的连接,也是Transaction的工厂。Session对象持有一个必选的一级缓存。
持久化对象:系统创建的POJO实例,一旦与特定的Session关联,并对应数据表的指定记录,该对象就处于持久化状态。
事务:代表一个原子操作,它具有数据库事务的概念,虽然事务操作是可选的,但是所有的持久化操作都应该在事务管理中。
接下来运用注解的方式进行。建立Teacher类。
这里就可以舍弃掉Teacher.hbm.xml.利用两个注解就可以搞定,但是在Hibernate.cfg.xml中要加入
ORM的全称Object/RelationMapping,对象/关系数据库映射。可以理解是一种规范,基本特征是完成面向对象的编程语言到关系数据库的映射。
Hibernate是一个面向Java环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于Sql的关系模型数据库结构中去。
Hibernate中的底层依然是基于JDBC的,因此在应用程序中使用Hibernate执行持久化时一定少不了JDBC的驱动
下面小例子XML方式:
1.建立类Student,就是相当于一个POJO类。这个类主要的作用就是一个简单类,用于数据库表的字段的映射。
packagecom.hibernate.model;
publicclassStudent{
privateintid;
privateStringname;
privateintage;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
}
2.这个普通的类还不具有持久化操作的能力,为了使其具备持久化操作的能力,这个方式采用的是XML的方式Student.hbm.xml
<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mappingpackage="com.hibernate.model">
<classname="Student">
<!--主键-->
<idname="id"></id>
<!--其他属性-->
<propertyname="name"/>
<propertyname="age"/>
</class>
</hibernate-mapping>
3.以上的XML文件持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据表列之间的对应关系。对于连接数据库的类型等通用的信息需要Hibernate的配置信息,配置信息需要指定的配置文件。hibernate.cfg.xml
<?xmlversion='1.0'encoding='utf-8'?>
<!DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--Databaseconnectionsettings数据库配置文件-->
<!--指定数据库所用的驱动-->
<propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>
<!--指定数据库的url,hibernate连接的数据库名-->
<propertyname="connection.url">jdbc:mysql://localhost/hibernate?useUnicode=true&characterEncoding=UTF-8</property>
<!--指定数据库连接的用户名-->
<propertyname="connection.username">root</property>
<!--数据库连接用的密码-->
<propertyname="connection.password">123</property>
<!--JDBCconnectionpool(usethebuilt-in)实际开发中不用hibernate的连接池-->
<propertyname="connection.pool_size">1</property>
<!--SQLdialect数据库方言-->
<propertyname="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--EnableHibernate'sautomaticsessioncontextmanagement-->
<!--<propertyname="current_session_context_class">thread</property>-->
<!--Disablethesecond-levelcache-->
<propertyname="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!--EchoallexecutedSQLtostdout显示sql语句-->
<propertyname="show_sql">true</property>
<!--Dropandre-createthedatabaseschemaonstartup自动创建表的-->
<propertyname="hbm2ddl.auto">create</property>
<!--罗列所有的映射文件-->
<mappingresource="com/hibernate/model/Student.hbm.xml"/>
<!--这种方式是利用注解的方式-->
<mappingclass="com.hibernate.model.Teacher"/>
</session-factory>
</hibernate-configuration>
4.进行测试
packagecom.hibernate.test;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
importcom.hibernate.model.Student;
publicclassStudentTest{
publicstaticvoidmain(String[]args){
Students=newStudent();
s.setId(1);
s.setAge(1);
s.setName("tom");
//实例化Configuration
Configurationcfg=newConfiguration();
//以Configuration默认加载Hibernate创建SessionFactory
SessionFactorysf=cfg.configure().buildSessionFactory();
//创建Session
Sessionsession=sf.openSession();
//开始事务
session.beginTransaction();
//保存信息
session.save(s);
//获得事务并且提交
session.getTransaction().commit();
//关闭Session
session.close();
sf.close();
}
}
SessionFactory:这是Hibernate关键的对象,它是单个数据库映射关系经过编译后的内存镜像,它也是线程安全。它是生成Session的工厂,本身依赖ConnectionProvider。该对象可以在进程或集群的级别上,为那些事务之间可以重用的数据库可以提供可选的二级缓存。
Session:它是应用程序与持久化之间的操作的单线程对象。它也是Hibernate持久化操作的关键对象,所有的持久化对象必须在Session管理下才可以进行持久化操作。此对象的生存期很短。底层封装了JDBC的连接,也是Transaction的工厂。Session对象持有一个必选的一级缓存。
持久化对象:系统创建的POJO实例,一旦与特定的Session关联,并对应数据表的指定记录,该对象就处于持久化状态。
事务:代表一个原子操作,它具有数据库事务的概念,虽然事务操作是可选的,但是所有的持久化操作都应该在事务管理中。
接下来运用注解的方式进行。建立Teacher类。
packagecom.hibernate.model;
importjavax.persistence.Entity;
importjavax.persistence.Id;
//表示实体类
@Entity
publicclassTeacher{
privateintid;
privateStringname;
privateStringtitle;
//一般都放在get方法这边·@Id表示主键
@Id
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetTitle(){
returntitle;
}
publicvoidsetTitle(Stringtitle){
this.title=title;
}
}
这里就可以舍弃掉Teacher.hbm.xml.利用两个注解就可以搞定,但是在Hibernate.cfg.xml中要加入
<!--这种方式是利用注解的方式-->
<mappingclass="com.hibernate.model.Teacher"/>
相关文章推荐
- Hibernate之关系映射的两种方式(xml映射、annotation注解映射)
- Hibernate 3.2.5 annotation介绍及其简单例子
- struts2利用annotation和xml两种方式验证
- Spring3与Hibernate4整合,Spring中配置Hibernate基于XML和annotation的sessionFactory方式。
- hibernate翻转的两种方式不同(hibernate.cfg.xml)
- 4、Hibernate 实体关系映射(一、单边一对多关系 注解、xml两种方式)
- Spring声明式事务管理的两种方式(XML和Annotation)
- Spring 管理hibernate事物,xml配置,注解 两种实现方式
- java中四种操作xml方式的比较以及四种方法的简单例子
- hibernate 支持配置文件和annotation两种方式
- 1.3 hibernate annotation环境搭建及简单的例子
- 4、Hibernate 实体关系映射(二、单边多对一关系 注解、xml两种方式)
- 简单读取xml的两种方式
- Hibernate采用*.hbm.xml方式和注释(annotation)插入数据示例
- 2.把hbm转化为DDL有两种方式:第一种是ExportDB,hibernate.cfg.xml
- Hibernate采用*.hbm.xml方式和注释(annotation)插入数据示例
- spring中对hibernate的支持是非常强大的,从一个简单的例子就看得出来,从这个例子中我们还将对所谓的轻量级容器做一些讨论。
- TreeMenu从XML加载的简单例子
- 一个简单的Hibernate例子
- Hibernate 最简单例子