Hibernate API和.hbm.xml映射教程
来源:互联网 发布:淘宝敲诈 编辑:程序博客网 时间:2024/05/02 14:19
hibernate官网入门指南
1.hibernate配置文件
配置文件示例
<hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">org.h2.Driver</property><property name="connection.url">jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE</property><property name="connection.username">sa</property><property name="connection.password"/><!-- JDBC connection pool (use the built-in) --><property name="connection.pool_size">1</property><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.H2Dialect</property><!-- Disable the second-level cache --><property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property><!-- Echo all executed SQL to stdout --><property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">create</property><!-- Names the annotated entity class --><mapping class="org.hibernate.tutorial.annotations.Event"/></session-factory></hibernate-configuration>
映射文件示例
<hibernate-mapping package="org.hibernate.tutorial.hbm"> <class name="Event" table="EVENTS"> <id name="id" column="EVENT_ID"><generator class="increment"/></id> <property name="date" type="timestamp" column="EVENT_DATE"/> <property name="title"/></hibernate-mapping>
1.1 类映射
<class name="Event" table="EVENTS"> ...</class>
1.2 id映射
<id name="id" column="EVENT_ID"> ...</id>
1.3 属性映射
<property name="date" type="timestamp" column="EVENT_DATE"/><property name="title"/>
2. SessionFactory工作原理
org.hibernate.SessionFactory源码
package org.hibernate.tutorial.annotations;import java.util.Date;import java.util.List;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import junit.framework.TestCase;/** * Illustrates the use of Hibernate native APIs. The code here is unchanged from the {@code basic} example, the * only difference being the use of annotations to supply the metadata instead of Hibernate mapping files. * * @author Steve Ebersole */public class AnnotationsIllustrationTest extends TestCase { private SessionFactory sessionFactory; @Override protected void setUp() throws Exception { // A SessionFactory is set up once for an application! final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() .configure() // configures settings from hibernate.cfg.xml .build(); try { sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); } catch (Exception e) { // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory // so destroy it manually. StandardServiceRegistryBuilder.destroy( registry ); } } @Override protected void tearDown() throws Exception { if ( sessionFactory != null ) { sessionFactory.close(); } } @SuppressWarnings({ "unchecked" }) public void testBasicUsage() { // create a couple of events... Session session = sessionFactory.openSession(); session.beginTransaction(); session.save( new Event( "Our very first event!", new Date() ) ); session.save( new Event( "A follow up event", new Date() ) ); session.getTransaction().commit(); session.close(); // now lets pull events from the database and list them session = sessionFactory.openSession(); session.beginTransaction(); List result = session.createQuery( "from Event" ).list(); for ( Event event : (List<Event>) result ) { System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() ); } session.getTransaction().commit(); session.close(); }}
3. session获取实体对象
Session session = sessionFactory.openSession();session.beginTransaction();session.save( new Event( "Our very first event!", new Date() ) );session.save( new Event( "A follow up event", new Date() ) );session.getTransaction().commit();session.close();
4.session获取实体对象列表
session = sessionFactory.openSession();session.beginTransaction();List result = session.createQuery( "from Event" ).list();for ( Event event : (List<Event>) result ) { System.out.println( "Event (" + event.getDate() + ") : " + event.getTitle() );}session.getTransaction().commit();session.close();
5. hibernate APIs和注解映射
5.1 Java类实体注解
实体类示例
package org.hibernate.tutorial.annotations;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;import org.hibernate.annotations.GenericGenerator;@Entity@Table( name = "EVENTS" )public class Event { private Long id; private String title; private Date date; public Event() { // this form used by Hibernate } public Event(String title, Date date) { // for application use, to create new events this.title = title; this.date = date; } @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") public Long getId() { return id; } private void setId(Long id) { this.id = id; } @Temporal(TemporalType.TIMESTAMP) @Column(name = "EVENT_DATE") public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; }}
识别类作为一个实体
@Entity@Table( name = "EVENTS" )public class Event { ...}
识别标识符的属性
@Id@GeneratedValue(generator="increment")@GenericGenerator(name="increment", strategy = "increment") //一种主键生成策略public Long getId() { return id;}
识别基本属性
public String getTitle() { return title;}@Temporal(TemporalType.TIMESTAMP)@Column(name = "EVENT_DATE")public Date getDate() { return date;}
6. JPA
暂时用不到,此处先略过
教程源码下载
阅读全文
0 0
- Hibernate API和.hbm.xml映射教程
- hibernate教程____hibernate持久化(基于实体类注解和hbm.xml映射文件区别)
- hibernate hbm xml 关系映射
- Hibernate数据检索策略和.hbm.xml映射文件
- Hibernate映射文件——.hbm.xml
- Hibernate-配置文件-映射文件.hbm.xml
- Hibernate映射文件(Entity.hbm.xml)
- Hibernate逆向生成class和hbm映射
- hibernate映射文件??.hbm.xml配置映射元素详解
- hibernate.cfg.xml和.hbm.xml
- Event.hbm.xml和hibernate.cfg.xml
- hibernate 的 使用 MyEclipse 工具生成 POJO 类和映射文件*.hbm.xml
- 使用oracle数据库和MySQL数据库时hibernate的映射文件.hbm.xml的不同
- Hibernate持久化类和映射文件 Xxx-hbm.xml ----Hibernate_1
- 使用myeclipse的反向工程生成hibernate映射文件(.hbm.xml)和pojo类
- hibernate hbm映射
- *.hbm.xml 映射配置文件
- Hibernate的映射文件(hbm.xml)属性说明
- POJ 2486 树形DP+背包
- 好的学习地方
- Python SyntaxError: invalid syntax错误处理
- 521. Longest Uncommon Subsequence I
- java保留两位小数4种方法
- Hibernate API和.hbm.xml映射教程
- 观察者模式,适配器模式,策略模式
- 好玩的代码注释图 神兽保佑 代码无bug
- 使用python 发邮件
- 优化篇 03. 远程桌面传输文件 ❀ Windows Server 2016
- 使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎之Hbase-0.94.27.搭建
- 【工作笔记】可自定义下拉选项的选择框
- 新创建的maven项目无法clean报错,提示在私服上找不到父包 'parent.relativePath' of POM com.tencent:weixin-web-base:[unknown-v
- 二级java程序设计--线程