对象关系映射(Object Relation Mapping(ORM))是一种为了解决面向对象与面向关系数据库互不匹配现象的技术,简而言之ORM是通过使用
Hibernate的映射机制
对象关系映射(Object Relation Mapping(ORM))是一种为了解决面向对象与面向关系数据库互不匹配现象的技术,简而言之ORM是通过使用描述对象之间映射的元数据,将java程序中的对象自动持久化到关系数据库中,这种映射机制从本质上来说其实就是将数据从一种形式转化为另一种形式
Hibernate的基本映射数据类型
Hibernate的基本映射数据类型是java基本类型与标准SQL类型相互转化的桥梁,其关系
java类型----------->Hibernate的映射数据类型----------->标准SQL类型
通过Hibernate的基本映射数据类型可以非常方便地将数据从一种形式转化成另一个形式,完成高质量的ORM任务
...
type="string"
...
>
datamap数据表
-----------------------------------------------------------------------------------------------
字段名称 数据类型 主键 自增 允许为空描述
ID int(4) 是 增1 否ID号
MYBOOLEAN bit(1)逻辑型数据
MYINT int(5) 整型数据
MYLONG bigint(11)长整型数据
MYFLOAT float(8,2)单精度浮点型数据
MYDOUBLE double(10,2)双精度浮点型数据
MYDECIMAL decimal(10,2)Decimal型数据
MYSTRING varchar(100)字符串数据
MYTEXT text Text型数据
MYDATE date Date型数据
MYTIME time Time型数据
MYDATETIME datetimeDatetime型数据
MYTIMESTAMP timestampTimestamp型数据
MYBINARY varbinary(10240)Binary型数据
MYBLOB longblobBlob型数据
------------------------------------------------------------------------------------------------
其对应的持久化类Datamap.java
com.hephec.orm
import java.io.Serializable
public class Datamap implements Serializable{
private int hashValue=0;
private Integer id;
private Boolean myboolean;
private Integer myint;
private Long mylong;
private Float myfloat;
private Double mydouble;
private BigDecimal mydecimal;
private String mytext;
private String mytext;
private Date mydatel;
private Time mytime;
private Date mydatetime;
private Timestamp mytimestamp;
private byte[] mybinary;
private Blob myblob;
private Datamap(){}//构造方法
//getter...setter省略
}
datamap表与Datamap类的ORM映射文件Datamap.hbm.xml
(1)创建数据访问DAO接口TestDAO.java
package com.DAO;
import com.ORM.*;
public interface TestDAO{
public void addDatamap(Datamap datamap);
public Datamap loadDatamap(Integer id);
public void delDatamap(Integer id);
}
(2)创建数据访问DAO接口实现TestDAOImpl.java
package com.DAO;
import com.ORM.*;
import org.hibernate.*;
public class TestDAOImpl 实现 TestDAO{
public void addDatamap(Datamap datamap){
Session session=MySessionFactory.currentSession();
事务 ts=null;
try{
ts=session.beginTransaction( );
session.save(datamap);
ts.commit();
}catch(异常 e){
if(ts!=null){
ts.rollback() ;
}
e.printStackTrace();
}最后{
MySessionFactory.closeSession();
}
}
公共数据映射loadDatamap(Integer id){
会话 session=MySessionFactory.currentSession();
事务 ts=null;
尝试{
ts=session.beginTransaction();
datamap=(Datamap)session.get (Datamap.class,id);
ts.commit();
}catch(异常 e){
if(ts!=null){
ts.rollback();
}
e.printStackTrace();
}最后{
MySessionFactory.closeSession();
}
返回数据映射;
}
public void delDatamap(Integer id){
会话 session=MySessionFactory.currentSession();
事务 ts=null;
尝试{
ts=session.beginTransaction();
数据映射 datamap=(Datamap)session.load(Datamap .class,id);
session.delete(datamap);
ts.commit();
}catch(异常 e){
if(ts!=null){
ts .rollback();
}
e.printStackTrace();
}最后{
MySessionFactory.closeSession();
}
}
}
(3 ) 创建一个临时测试用的 TestBean.java
package com.bean;
import com.ORM.*;
import java.io.*;
import java.math.BigDecimal;
导入 java.net.*;
导入 org.hibernate.*;