多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > Hibernate的映射機制

Hibernate的映射機制

來源:程序員人生   發布時間:2014-12-23 09:05:57 閱讀次數:3362次
Hibernate的映照機制
對象關系映照(Object Relation Mapping(ORM))是1種為了解決面向對象與面向關系數據庫互不匹配現象的技術,簡而言之
ORM是通過使用描寫對象之間映照的元數據,將java程序中的對象自動持久化到關系數據庫中,這類映照機制從本質上來講
其實就是將數據從1種情勢轉化為另外一種情勢


Hibernate的基本映照數據類型
Hibernate的基本映照數據類型是java基本類型與標準SQL類型相互轉化的橋梁,其關系
java類型----------->Hibernate的映照數據類型----------->標準SQL類型
通過Hibernate的基本映照數據類型可以非常方便地將數據從1種情勢轉化成另外一個情勢,完成高質量的ORM任務
...
<!--
name:這是持久化類User.java中1個String類型的屬性
column:這是數據庫表user中1個類型為char(20)的字段
type:這是Hibernate映照類型
-->
<property name="password"
column="password"
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 datetime Datetime型數據
MYTIMESTAMP timestamp Timestamp型數據
MYBINARY varbinary(10240) Binary型數據
MYBLOB longblob Blob型數據
------------------------------------------------------------------------------------------------
其對應的持久化類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
<hibernate-mapping package="com.orm">
<class name="Datamap" table="datamap">
<id name="id" column="ID" type="Integer">
<generator class="identity"/>
</id>
<property name="myboolean" column="MYBOOLEAN" type="boolean"/>
<property name="myint" column="MYINT" type="integer"/>
<property name="mylong" column="MYLONG" type="long"/>
<property name="myfloat" column="MYFLOAT" type="float"/>
<property name="mydouble" column="MYDOUBLE" type="double"/>
<property name="mydecimal" column="MYDECIMAL" type="decimal"/>
<property name="mystring" column="MYSTRING" type="string"/>
<property name="mytext" column="MYTEXT" type="string"/>
<property name="mydate" column="MYDATE" type="date"/>
<property name="mytime" column="MYTIME" type="time"/>
<property name="mydatetime" column="MYDATETIME" type="timestamp"/>
<property name="mytimestamp" column="MYTEMESTAMP" type="timestamp"/>
<property name="mybinary" column="MYBINARY" type="binary"/>
<property name="myblob" column="MYBLOB" type="blob"/>
</class>
<hibernate-mapping/>


(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 implements TestDAO{
public void addDatamap(Datamap datamap){
Session session=MySessionFactory.currentSession();
Transaction ts=null;
try{
ts=session.beginTransaction();
session.save(datamap);
ts.commit();
}catch(Exception e){
if(ts!=null){
ts.rollback();
}
e.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
}
public Datamap loadDatamap(Integer id){


Session session=MySessionFactory.currentSession();
Transaction ts=null;
try{
ts=session.beginTransaction();
datamap=(Datamap)session.get(Datamap.class,id);
ts.commit();
}catch(Exception e){
if(ts!=null){
ts.rollback();
}
e.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return datamap;
}
public void delDatamap(Integer id){
Session session=MySessionFactory.currentSession();
Transaction ts=null;
try{
ts=session.beginTransaction();
Datamap datamap=(Datamap)session.load(Datamap.class,id);
session.delete(datamap);
ts.commit();
}catch(Exception e){
if(ts!=null){
ts.rollback();
}
e.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
}
}
(3)創建1個可供測試用的TestBean.java
package com.bean;
import com.ORM.*;
import java.io.*;
import java.math.BigDecimal;
import java.net.*;
import org.hibernate.*;


public class TestBean{
TestDAO dao=new TestDAOImpl();
//得到指定URL的html內容
private String getHtmlByUrl(String url){
StringBuffer hmtl=new StringBuffer();
String line=null;
try{
URL u=new URL(url);
URLConnection uc=u.openConnection();
BufferedReader br=new BufferedReader(new InputStreamReader(uc.getInputStream()));
while(line=(br.readLine())!=null){
html.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return html.toString();
}
//讀取2進制流
private byte[] readBinary(InputStream in){
byte[] binCodes=null;
try{
binCodes=new byte[in.available()];
in.read(binCodes);
in.close();
}catch(Exception e){
e.printStackTrace();
}
return binCodes;
}
}
//從輸出流中創建BLOB對象
private java.sql.Blob getBlob(InputStream in){
java.sql.Blob blob=null;
try{
blob=Hibernate.createBlob(in);
in.close();
}catch(Exception e){
e.printStackTrace();
}
return blob;
}
Hibernate的映照機制
對象關系映照(Object Relation Mapping(ORM))是1種為了解決面向對象與面向關系數據庫互不匹配現象的技術,簡而言之
ORM是通過使用描寫對象之間映照的元數據,將java程序中的對象自動持久化到關系數據庫中,這類映照機制從本質上來講
其實就是將數據從1種情勢轉化為另外一種情勢


Hibernate的基本映照數據類型
Hibernate的基本映照數據類型是java基本類型與標準SQL類型相互轉化的橋梁,其關系
java類型----------->Hibernate的映照數據類型----------->標準SQL類型
通過Hibernate的基本映照數據類型可以非常方便地將數據從1種情勢轉化成另外一個情勢,完成高質量的ORM任務
...
<!--
name:這是持久化類User.java中1個String類型的屬性
column:這是數據庫表user中1個類型為char(20)的字段
type:這是Hibernate映照類型
-->
<property name="password"
column="password"
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 datetime Datetime型數據
MYTIMESTAMP timestamp Timestamp型數據
MYBINARY varbinary(10240) Binary型數據
MYBLOB longblob Blob型數據
------------------------------------------------------------------------------------------------
其對應的持久化類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
<hibernate-mapping package="com.orm">
<class name="Datamap" table="datamap">
<id name="id" column="ID" type="Integer">
<generator class="identity"/>
</id>
<property name="myboolean" column="MYBOOLEAN" type="boolean"/>
<property name="myint" column="MYINT" type="integer"/>
<property name="mylong" column="MYLONG" type="long"/>
<property name="myfloat" column="MYFLOAT" type="float"/>
<property name="mydouble" column="MYDOUBLE" type="double"/>
<property name="mydecimal" column="MYDECIMAL" type="decimal"/>
<property name="mystring" column="MYSTRING" type="string"/>
<property name="mytext" column="MYTEXT" type="string"/>
<property name="mydate" column="MYDATE" type="date"/>
<property name="mytime" column="MYTIME" type="time"/>
<property name="mydatetime" column="MYDATETIME" type="timestamp"/>
<property name="mytimestamp" column="MYTEMESTAMP" type="timestamp"/>
<property name="mybinary" column="MYBINARY" type="binary"/>
<property name="myblob" column="MYBLOB" type="blob"/>
</class>
<hibernate-mapping/>


(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 implements TestDAO{
public void addDatamap(Datamap datamap){
Session session=MySessionFactory.currentSession();
Transaction ts=null;
try{
ts=session.beginTransaction();
session.save(datamap);
ts.commit();
}catch(Exception e){
if(ts!=null){
ts.rollback();
}
e.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
}
public Datamap loadDatamap(Integer id){


Session session=MySessionFactory.currentSession();
Transaction ts=null;
try{
ts=session.beginTransaction();
datamap=(Datamap)session.get(Datamap.class,id);
ts.commit();
}catch(Exception e){
if(ts!=null){
ts.rollback();
}
e.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
return datamap;
}
public void delDatamap(Integer id){
Session session=MySessionFactory.currentSession();
Transaction ts=null;
try{
ts=session.beginTransaction();
Datamap datamap=(Datamap)session.load(Datamap.class,id);
session.delete(datamap);
ts.commit();
}catch(Exception e){
if(ts!=null){
ts.rollback();
}
e.printStackTrace();
}finally{
MySessionFactory.closeSession();
}
}
}
(3)創建1個可供測試用的TestBean.java
package com.bean;
import com.ORM.*;
import java.io.*;
import java.math.BigDecimal;
import java.net.*;
import org.hibernate.*;


public class TestBean{
TestDAO dao=new TestDAOImpl();
//得到指定URL的html內容
private String getHtmlByUrl(String url){
StringBuffer hmtl=new StringBuffer();
String line=null;
try{
URL u=new URL(url);
URLConnection uc=u.openConnection();
BufferedReader br=new BufferedReader(new InputStreamReader(uc.getInputStream()));
while(line=(br.readLine())!=null){
html.append(line);
}
}catch(Exception e){
e.printStackTrace();
}
return html.toString();
}
//讀取2進制流
private byte[] readBinary(InputStream in){
byte[] binCodes=null;
try{
binCodes=new byte[in.available()];
in.read(binCodes);
in.close();
}catch(Exception e){
e.printStackTrace();
}
return binCodes;
}
}
//從輸出流中創建BLOB對象
private java.sql.Blob getBlob(InputStream in){
java.sql.Blob blob=null;
try{
blob=Hibernate.createBlob(in);
in.close();
}catch(Exception e){
e.printStackTrace();
}
return blob;
}
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产成+人+综合+亚洲不卡 | 国产精品久久一区一区 | 九色中文 | 国产一级做a爰片... | 欧美黑人ⅹxxx片 | 亚色中文 | 久久国产精品一国产精品 | 波多野野结衣1区二区 | 国产尤物视频在线 | 国产一区二区三区亚洲欧美 | 91精品日韩 | 久久乐国产综合亚洲精品 | 一级片日韩 | 久久在精品线影院精品国产 | 免费观看一级欧美大 | 欧美午夜在线观看 | 国产精品久久久久无毒 | 国产福利专区 | 亚洲精品一区二区乱码在线观看 | 男人看的网址 | 久久成人小视频 | 福利在线影院 | 精品一区二区三区无卡乱码 | 国产成人久久一区二区三区 | 中文字幕在线网 | 日本人视频-jlzz jlzz jlzz | 日韩亚洲欧美综合一区二区三区 | аⅴ资源中文在线天堂 | 国产高清一区二区三区免费视频 | 久久精品视频一区二区三区 | 亚洲精品一二三区-久久 | 九九成人免费视频 | 亚洲最大在线观看 | 性欧美18videofreetubehd黑人 | 国产精品久久在线观看 | 色综合久久久高清综合久久久 | 一二三四视频免费视频 | 国产狂喷白浆在线观看视频 | 欧美色视 | 久久亚洲精品成人综合 | 午夜视频h |