锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鍦↗ava紼嬪簭涓?綾諱箣闂村瓨鍦ㄥ縐嶅寘鍚叧緋?鍏稿瀷鐨勪笁縐嶅叧鑱斿叧緋繪湁:涓涓被鎷ユ湁鍙︿竴涓被鐨勬垚鍛?涓涓被鎷ユ湁鍙︿竴涓被鐨勯泦鍚堢殑鎴愬憳;涓や釜綾葷浉浜掓嫢鏈夊璞$殑闆嗗悎鐨勬垚鍛?鍦℉ibernate涓?鎴戜滑鍙互浣跨敤鏄犲皠鏂囦歡涓殑many-to-one, one-to-many, many-to-many鏉ュ疄鐜板畠浠?榪欐牱鐨勫叧緋誨湪Hibernate涓畝縐頒負澶氬涓,涓瀵瑰鍜屽瀵瑰.
澶氬涓鐨勭被浠g爜
浜嬩歡涓庡湴鐐規槸鍏稿瀷鐨勫瀵逛竴鍏崇郴,澶氫釜浜嬩歡鍙互鍦ㄤ竴涓湴鐐瑰彂鐢?鏃墮棿涓嶅悓),涓涓湴鐐瑰彲鍙戠敓澶氫釜浜嬩歡.瀹冧滑鐨勫搴斿叧緋繪槸(澶?浜嬩歡瀵?涓)鍦扮偣.
涓や釜綾葷殑浠g爜濡傚彸:
public class Event{
private String id;
private String name;
private Location location;
}
public class Location{
private String id;
private String name;
}
澶氬涓鐨勬槧灝勬枃浠?/strong>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.Event"
table="Event_TB">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="name" />
<many-to-one name="location" column="locationId" class="com.sitinspring.domain.Location"/>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.Location"
table="Location_TB">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="name" />
</class>
</hibernate-mapping>
澶氬涓鐨勮〃鏁版嵁
涓瀵瑰鐨勭被浠g爜
濡傛灉涓涓敤鎴鋒湁澶氫釜鏉冮檺,閭d箞User綾誨拰Privilege綾誨氨鏋勬垚浜嗕竴瀵瑰鐨勫叧緋?User綾誨皢鍖呭惈涓涓狿rivilege綾葷殑闆嗗悎.
public class User{
private String id;
private String name;
private Set<Privilege> privileges=new LinkedHashSet<Privilege>();
}
public class Privilege{
private String id;
private String userId;
private int privilegeLevel;
}
涓瀵瑰鐨勬槧灝勬枃浠?/strong>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.User"
table="User_TB">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="name" />
<set name="privileges">
<key column="userId"/>
<one-to-many class="com.sitinspring.domain.Privilege"/>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.Privilege"
table="Privilege_TB">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="userId" column="userId" />
<property name="privilegeLevel" column="privilegeLevel" />
</class>
</hibernate-mapping>
涓瀵瑰鐨勮〃鏁版嵁
澶氬澶?/strong>
澶氬澶氬叧緋?鏄寚涓や釜綾葷浉浜掓嫢鏈夊鏂圭殑闆嗗悎,濡傛枃绔犲拰鏍囩涓や釜綾?涓綃囨枃绔犲彲鑳芥湁澶氫釜鏍囩,涓涓爣絳懼彲鑳藉搴斿綃囨枃绔?瑕佸疄鐜拌繖縐嶅叧緋婚渶瑕佷竴涓腑闂磋〃鐨勮緟鍔?
綾諱唬鐮佸鍙?
public class Article{
private String id;
private String name;
private Set<Tag> tags = new HashSet<Tag>();
}
public class Tag{
private String id;
private String name;
private Set<Article> articles = new HashSet<Article>();
}
澶氬澶氱殑鏄犲皠鏂囦歡
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.Article" table="ARTICLE_TB">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="NAME" />
<set name="tags" table="ARTICLETAG_TB" cascade="all" lazy="false">
<key column="ARTICLEID" />
<many-to-many column="TAGID" class="com.sitinspring.domain.Tag" />
</set>
</class>
</hibernate-mapping>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.Tag" table="TAG_TB">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="NAME" />
<set name="articles" table="ARTICLETAG_TB" cascade="all" lazy="false">
<key column="TAGID" />
<many-to-many column="ARTICLEID" class="com.sitinspring.domain.Article" />
</set>
</class>
</hibernate-mapping>
澶氬澶氱殑琛ㄦ暟鎹?/strong>
婧愮爜涓嬭澆錛?br />
http://m.tkk7.com/Files/junglesong/HibernateMapping20080430203526.rar
Hibernate涓殑Criteria API鎻愪緵浜嗗彟涓縐嶆煡璇㈡寔涔呭寲鐨勬柟娉曘傚畠璁╀綘鑳藉浣跨敤綆鍗曠殑API鍔ㄦ佺殑鏋勫緩鏌ヨ錛屽畠鐏墊椿鐨勭壒鎬ч氬父鐢ㄤ簬鎼滅儲鏉′歡鐨勬暟閲忓彲鍙樼殑鎯呭喌銆?br /> Criteria鏌ヨ涔嬫墍浠ョ伒媧繪槸鍥犱負瀹冨彲浠ュ熷姪Java璇█,鍦↗ava鐨勫府鍔╀笅瀹冩嫢鏈夎秴瓚奌QL鐨勫姛鑳姐侰riteria鏌ヨ涔熸槸Hibernate绔姏鎺ㄨ崘鐨勪竴縐嶉潰鍚戝璞$殑鏌ヨ鏂瑰紡銆?br /> Criteria鏌ヨ鐨勭己鐐瑰湪浜庡彧鑳芥绱㈠畬鏁寸殑瀵硅薄錛屼笉鏀寔緇熻鍑芥暟錛屽畠鏈韓鐨凙PI涔熸姮楂樹簡涓瀹氱殑瀛︿範鍧″害銆?/p>
Criteria鏌ヨ紺轟緥浠g爜
Session session=HibernateUtil.getSession();
Criteria criteria=session.createCriteria(User.class);
// 鏉′歡涓錛氬悕縐頒互鍏沖紑澶?br />
criteria.add(Restrictions.like("name", "鍏?"));
// 鏉′歡浜岋細email鍑虹幇鍦ㄦ暟緇勪腑
String[] arr={"1@2.3","2@2.3","3@2.3"};
criteria.add(Restrictions.in("email", arr));
// 鏉′歡涓夛細password絳変簬涓
criteria.add(Restrictions.eq("password", "1"));
// 鎺掑簭鏉′歡錛氭寜鐧誨綍鏃墮棿鍗囧簭
criteria.addOrder(Order.asc("lastLoginTime"));
List<User> users=(List<User>)criteria.list();
System.out.println("榪斿洖鐨刄ser瀹炰緥鏁頒負"+users.size());
for(User user:users){
System.out.println(user);
}
HibernateUtil.closeSession(session);
Criteria鏌ヨ瀹為檯浜х敓鐨凷QL璇彞
select
this_.ID as ID0_0_,
this_.name as name0_0_,
this_.pswd as pswd0_0_,
this_.email as email0_0_,
this_.lastLoginTime as lastLogi5_0_0_,
this_.lastLoginIp as lastLogi6_0_0_
from
USERTABLE_OKB this_
where
this_.name like '鍏?'
and this_.email in (
'1@2.3', '2@2.3', '3@2.3'
)
and this_.pswd='1'
order by
this_.lastLoginTime asc
娉細鍙傛暟鏄墜宸ュ姞涓婄殑銆?br />
Hibernate涓笉浣跨敤SQL鑰屾槸鏈夎嚜宸辯殑闈㈠悜瀵硅薄鏌ヨ璇█,璇ヨ璦鍚嶄負Hibernate鏌ヨ璇█(Hibernate Query Language).HQL琚湁鎰忚璁℃垚綾諱技SQL,榪欐牱寮鍙戜漢鍛樺彲浠ュ埄鐢ㄥ凡鏈夌殑SQL鐭ヨ瘑,闄嶄綆瀛︿範鍧″害.瀹冩敮鎸佸父鐢ㄧ殑SQL鐗規?榪欎簺鐗規ц灝佽鎴愰潰鍚戝璞$殑鏌ヨ璇█,浠庢煇縐嶆剰涔変笂鏉ヨ,鐢盚QL鏄潰鍚戝璞$殑,鍥犳姣擲QL鏇村鏄撶紪鍐?
鏈枃灝嗛愭笎浠嬬粛HQL鐨勭壒鎬?
鏌ヨ鏁版嵁搴撲腑鎵鏈夊疄渚?/strong>
瑕佸緱鍒版暟鎹簱涓墍鏈夊疄渚?HQL鍐欎負”from 瀵硅薄鍚?#8221;鍗沖彲,涓嶉渶瑕乻elect瀛愬彞,褰撶劧鏇翠笉闇瑕乄here瀛愬彞.浠g爜濡傚彸.
Query query=session.createQuery("from User");
List<User> users=(List<User>)query.list();
for(User user:users){
System.out.println(user);
}
闄愬埗榪斿洖鐨勫疄渚嬫暟
璁劇疆鏌ヨ鐨刴axResults灞炴у彲闄愬埗榪斿洖鐨勫疄渚?璁板綍)鏁?浠g爜濡傚彸:
Query query=session.createQuery("from User order by name");
query.setMaxResults(5);
List<User> users=(List<User>)query.list();
System.out.println("榪斿洖鐨刄ser瀹炰緥鏁頒負"+users.size());
for(User user:users){
System.out.println(user);
}
鍒嗛〉鏌ヨ
鍒嗛〉鏄疻eb寮鍙戠殑甯歌璇鵑,姣忕鏁版嵁搴撻兘鏈夎嚜宸辯壒瀹氱殑鍒嗛〉鏂規,浠庣畝鍗曞埌澶嶆潅閮芥湁.鍦℉ibernate涓垎欏甸棶棰樺彲浠ラ氳繃璁劇疆firstResult鍜宮axResult杞繪澗鐨勮В鍐?
浠g爜濡傚彸:
Query query=session.createQuery("from User order by name");
query.setFirstResult(3);
query.setMaxResults(5);
List<User> users=(List<User>)query.list();
System.out.println("榪斿洖鐨刄ser瀹炰緥鏁頒負"+users.size());
for(User user:users){
System.out.println(user);
}
鏉′歡鏌ヨ
鏉′歡鏌ヨ鍙澧炲姞Where鏉′歡鍗沖彲.
浠g爜濡傚彸:
Hibernate涓潯浠舵煡璇㈢殑瀹炵幇鏂瑰紡鏈夊縐?榪欑鏂瑰紡鐨勪紭鐐瑰湪浜庤兘鏄劇ず瀹屾暣鐨凷QL璇彞(鍖呮嫭鍙傛暟)濡備笅.
select
user0_.ID as ID0_,
user0_.name as name0_,
user0_.pswd as pswd0_,
user0_.email as email0_,
user0_.lastLoginTime as lastLogi5_0_,
user0_.lastLoginIp as lastLogi6_0_
from
USERTABLE_OKB user0_
where
user0_.name like '浣?'
public static void fetchByName(String prefix){
Session session=HibernateUtil.getSession();
Query query=session.createQuery("from User where name like'"+prefix+"%'");
List<User> users=(List<User>)query.list();
System.out.println("榪斿洖鐨刄ser瀹炰緥鏁頒負"+users.size());
for(User user:users){
System.out.println(user);
}
HibernateUtil.closeSession(session);
}
浣嶇疆鍙傛暟鏉′歡鏌ヨ
HQL涓篃鍙互璞dbc涓璓reparedStatement涓鏍蜂負SQL璁懼畾鍙傛暟,浣嗕笉鍚岀殑鏄笅鏍囦粠0寮濮?
浠g爜濡傚彸:
public static void fetchByPos(String prefix){
Session session=HibernateUtil.getSession();
Query query=session.createQuery("from User where name=?");
// 娉ㄦ剰涓嬫爣鏄粠0寮濮?鍜宩dbc涓璓reparedStatement浠?寮濮嬩笉鍚?br />
query.setParameter(0, prefix);
List<User> users=(List<User>)query.list();
System.out.println("榪斿洖鐨刄ser瀹炰緥鏁頒負"+users.size());
for(User user:users){
System.out.println(user);
}
HibernateUtil.closeSession(session);
}
鍛藉悕鍙傛暟鏉′歡鏌ヨ
浣跨敤浣嶇疆鍙傛暟鏉′歡鏌ヨ鏈澶х殑涓嶄究鍦ㄤ簬涓嬫爣涓?鍙蜂綅緗殑瀵瑰簲涓?濡傛灉鍙傛暟杈冨瀹規槗瀵艱嚧閿欒.榪欐椂閲囩敤鍛藉悕鍙傛暟鏉′歡鏌ヨ鏇村ソ.
浣跨敤鍛藉悕鍙傛暟鏃舵棤闇鐭ラ亾姣忎釜鍙傛暟鐨勭儲寮曚綅緗?榪欐牱灝卞彲浠ヨ妭鐪佸~鍏呮煡璇㈠弬鏁扮殑鏃墮棿.
濡傛灉鏈変竴涓懡鍚嶅弬鏁板嚭鐜板嬈?閭e湪姣忎釜鍦版柟閮戒細璁劇疆瀹?
public static void fetchByNamedParam(){
Session session=HibernateUtil.getSession();
Query query=session.createQuery("from User where name=:name");
query.setParameter("name", "鏉庣櫧");
List<User> users=(List<User>)query.list();
System.out.println("榪斿洖鐨刄ser瀹炰緥鏁頒負"+users.size());
for(User user:users){
System.out.println(user);
}
HibernateUtil.closeSession(session);
}
鍛藉悕鏌ヨ
鍛藉悕鏌ヨ鏄祵鍦╔ML鏄犲皠鏂囦歡涓殑鏌ヨ銆傞氬父錛屽皢緇欏畾瀵硅薄鐨勬墍鏈夋煡璇㈤兘鏀懼湪鍚屼竴鏂囦歡涓紝榪欑鏂瑰紡鍙嬌緇存姢鐩稿瀹規槗浜涖傚懡鍚嶆煡璇㈣鍙ュ啓鍦ㄦ槧灝勫畾涔夋枃浠剁殑鏈鍚庨潰銆?/p>
鎵ц浠g爜濡備笅錛?br /> Session session=HibernateUtil.getSession();
Query query=session.getNamedQuery("user.sql");
List<User> users=(List<User>)query.list();
System.out.println("榪斿洖鐨刄ser瀹炰緥鏁頒負"+users.size());
for(User user:users){
System.out.println(user);
}
HibernateUtil.closeSession(session);
鏄犲皠鏂囦歡鑺傞夛細
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.User"
table="USERTABLE_OKB" lazy="false">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="name" />
<property name="password" column="pswd" />
<property name="email" column="email" />
<property name="lastLoginTime" column="lastLoginTime" />
<property name="lastLoginIp" column="lastLoginIp" />
</class>
<query name="user.sql">
<![CDATA[from User where email='2@2.3']]>
</query>
</hibernate-mapping>
Configuration綾?/strong>
Configuration綾誨惎鍔℉ibernate鐨勮繍琛岀幆澧冮儴鍒嗭紝鐢ㄤ簬鍔犺澆鏄犲皠鏂囦歡浠ュ強涓哄畠浠垱寤轟竴涓猄essionFacotry銆傚畬鎴愯繖涓ら」鍔熻兘鍚庯紝灝卞彲涓㈠純Configuration綾匯?/p>
// 浠巋ibernate.cfg.xml鍒涘緩SessionFactory 紺轟緥
sessionFactory = new Configuration().configure()
.buildSessionFactory();
SessionFactory綾?/strong>
Hibernate涓璖ession琛ㄧず鍒版暟鎹簱鐨勮繛鎺ワ紙涓嶆浜庢錛夛紝鑰孲essionFactory鎺ュ彛鎻愪緵Session綾葷殑瀹炰緥銆?br /> SessionFactory瀹炰緥鏄嚎紼嬪畨鍏ㄧ殑錛岄氬父鍦ㄦ暣涓簲鐢ㄧ▼搴忎腑鍏變韓銆?br /> 浠嶤onfiguration鍒涘緩SessionFacotry鐨勪唬鐮佸鍙熾?/p>
// 浠巋ibernate.cfg.xml鍒涘緩SessionFactory 紺轟緥
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Session綾?/strong>
Session琛ㄧず鍒版暟鎹簱鐨勮繛鎺ワ紝session綾葷殑瀹炰緥鏄埌Hibernate妗嗘灦鐨勪富瑕佹帴鍙o紝浣夸綘鑳藉鎸佷箙鍖栧璞★紝鏌ヨ鎸佷箙鍖栦互鍙婂皢鎸佷箙鍖栧璞¤漿鎹負涓存椂瀵硅薄銆?br /> Session瀹炰緥涓嶆槸綰跨▼瀹夊叏鐨勶紝鍙兘灝嗗叾鐢ㄤ簬搴旂敤涓殑浜嬪姟鍜屽伐浣滃崟鍏冦?br /> 鍒涘緩Session瀹炰緥鐨勪唬鐮佸鍙籌細
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
Session session=sessionFactory.openSession();
淇濆瓨涓涓璞?/strong>
鐢℉ibernate鎸佷箙鍖栦竴涓復鏃跺璞′篃灝辨槸灝嗗畠淇濆瓨鍦⊿ession瀹炰緥涓細
瀵箄ser瀹炰緥璋冪敤save鏃訛紝灝嗙粰璇ュ疄渚嬪垎閰嶄竴涓敓鎴愮殑ID鍊鹼紝騫舵寔涔呭寲璇ュ疄渚嬶紝鍦ㄦ涔嬪墠瀹炰緥鐨刬d鏄痭ull錛屼箣鍚庡叿浣撶殑id鐢辯敓鎴愬櫒絳栫暐鍐沖畾錛屽鏋滅敓鎴愬櫒綾誨瀷鏄痑ssignd錛孒ibernate灝嗕笉浼氱粰鍏惰緗甀D鍊箋?br />
Flush錛堬級鏂規硶灝嗗唴瀛樹腑鐨勬寔涔呭寲瀵硅薄鍚屾鍒版暟鎹簱銆傚瓨鍌ㄥ璞℃椂錛孲ession涓嶄細绔嬪嵆灝嗗叾鍐欏叆鏁版嵁搴擄紱鐩稿弽錛宻ession灝嗗ぇ閲忔暟鎹簱鍐欐搷浣滃姞鍏ラ槦鍒楋紝浠ユ渶澶ч檺搴︾殑鎻愰珮鎬ц兘銆?/p>
User user=new User(“Andy”,22);
Session session=sessionFatory.openSession();
session.save(user);
session.flush();
session.close();
淇濆瓨鎴栨洿鏂頒竴涓璞?/strong>
Hibernate鎻愪緵浜嗕竴縐嶄究鍒╃殑鏂規硶鐢ㄤ簬鍦ㄤ綘涓嶆竻妤氬疄渚嬪搴旂殑鏁版嵁鍦ㄦ暟鎹簱涓殑鐘舵佹椂淇濆瓨鎴栨洿鏂頒竴涓璞★紝涔熷氨鏄錛屼綘涓嶈兘紜畾鍏蜂綋鏄淇濆瓨save榪樻槸鏇存柊update錛屽彧鑳界‘瀹氶渶瑕佹妸瀵硅薄鍚屾鍒版暟鎹簱涓傝繖涓柟娉曞氨鏄痵aveOrUpdate銆?br /> Hibernate鍦ㄦ寔涔呭寲鏃朵細鏌ョ湅瀹炰緥鐨刬d灞炴э紝濡傛灉鍏朵負null鍒欏垽鏂瀵硅薄鏄復鏃剁殑錛屽湪鏁版嵁搴撲腑鎵句笉鍒板搴旂殑瀹炰緥錛屽叾鍚庨夋嫨淇濆瓨榪欎釜瀵硅薄錛涜屼笉涓虹┖鏃跺垯鎰忓懗鐫瀵硅薄宸茬粡鎸佷箙鍖栵紝搴旇鍦ㄦ暟鎹簱涓洿鏂拌瀵硅薄錛岃屼笉鏄皢鍏舵彃鍏ャ?/p>
User user=銆傘傘?
Session session=sessionFatory.openSession();
session.saveOrUpdate(user);
Session.flush();
session.close();
鍒犻櫎涓涓璞?/strong>
浠庢暟鎹簱鍒犻櫎涓涓璞′嬌鐢╯ession鐨刣elete鏂規硶錛屾墽琛屽垹闄ゆ搷浣滃悗錛屽璞″疄渚嬩緷鐒跺瓨鍦紝浣嗘暟鎹簱涓搴旂殑璁板綍宸茬粡琚垹闄ゃ?/p>
User user=銆傘傘?
Session session=sessionFatory.openSession();
session.delete(user);
session.flush();
session.close();
浠D浠庢暟鎹簱涓彇寰椾竴涓璞?/strong>
濡傛灉宸茬粡鐭ラ亾涓涓璞$殑id錛岄渶瑕佷粠鏁版嵁搴撲腑鍙栧緱瀹冿紝鍙互浣跨敤Session鐨刲oad鏂規硶鏉ヨ繑鍥炲畠銆備唬鐮佸鍙?
娉ㄦ剰姝ゆ斁鍦╥d瀵瑰簲鐨勮褰曚笉瀛樺湪鏃朵細鎶涘嚭涓涓狧ibernateException寮傚父錛屽畠鏄竴涓潪媯鏌ユу紓甯搞傚姝ょ殑姝g‘澶勭悊鏄崟鑾瘋繖涓紓甯稿茍榪斿洖涓涓猲ull銆?br />
浣跨敤姝ゆ兂娉曞鏋滈噰鐢ㄩ粯璁ょ殑鎳掓儼鍔犺澆浼氬鑷村紓甯革紝瀵規鏈綆鍗曠殑瑙e喅鏂規鏄妸榛樿鐨勬噿鎯板姞杞藉睘鎬т慨鏀逛負false銆傚鍙籌細
User user=(User)session.load(User.class,"008");
session.close();
-----------------------------------------------
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.User"
table="USERTABLE_OKB" lazy="false">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
銆傘傘傘?br />
</class>
</hibernate-mapping>
媯绱竴鎵瑰璞?/strong>
媯绱竴鎵瑰璞¢渶瑕佷嬌鐢℉QL錛宻ession鎺ュ彛鍏佽浣犲垱寤篞uery瀵硅薄浠ユ绱㈡寔涔呭寲瀵硅薄錛孒QL鏄潰鍚戝璞$殑錛屼綘闇瑕侀拡瀵圭被鍜屽睘鎬ф潵涔﹀啓浣犵殑HQL鑰屼笉鏄〃鍜屽瓧孌靛悕銆?br />
浠庢暟鎹簱涓煡璇㈡墍鏈夌敤鎴峰璞″涓嬶細
Query query=session.createQuery(“from User”);// 娉ㄦ剰榪欓噷User鏄被鍚嶏紝from鍓嶆病鏈塻elect銆?br />
List<User> users=(List<User>)query.list();
浠庢暟鎹簱涓煡璇㈠悕涓?#8220;Andy”鐨勭敤鎴峰涓嬶細
String name=“Andy”;
Query query=session.createQuery(“from User where name=‘”+name+”’”);
List<User> users=(List<User>)query.list();
浠ヤ笂鏂規硶綾諱技浜嶴tatement鐨勫啓娉曪紝浣犺繕鍙互濡備笅涔﹀啓錛?br />
Query query=session.createQuery("from User user where user.name = :name");
query.setString("name", “Andy");
List<User> users=(List<User>)query.list();
鏄犲皠鏂囦歡涔熺О鏄犲皠鏂囨。,鐢ㄤ簬鍚慔ibernate鎻愪緵鍏充簬灝嗗璞℃寔涔呭寲鍒板叧緋繪暟鎹簱涓殑淇℃伅.
鎸佷箙鍖栧璞$殑鏄犲皠瀹氫箟鍙叏閮ㄥ瓨鍌ㄥ湪鍚屼竴涓槧灝勬枃浠朵腑,涔熷彲灝嗘瘡涓璞$殑鏄犲皠瀹氫箟瀛樺偍鍦ㄧ嫭绔嬬殑鏂囦歡涓?鍚庝竴縐嶆柟娉曡緝濂?鍥犱負灝嗗ぇ閲忔寔涔呭寲綾葷殑鏄犲皠瀹氫箟瀛樺偍鍦ㄤ竴涓枃浠朵腑姣旇緝楹葷儲,寤鴻閲囩敤姣忎釜綾諱竴涓枃浠剁殑鏂規硶鏉ョ粍緇囨槧灝勬枃妗?浣跨敤澶氫釜鏄犲皠鏂囦歡榪樻湁涓涓紭鐐?濡傛灉灝嗘墍鏈夋槧灝勫畾涔夐兘瀛樺偍鍒頒竴涓枃浠朵腑,灝嗛毦浠ヨ皟璇曞拰闅旂鐗瑰畾綾葷殑鏄犲皠瀹氫箟閿欒.
鏄犲皠鏂囦歡鐨勫懡鍚嶈鍒欐槸,浣跨敤鎸佷箙鍖栫被鐨勭被鍚?騫朵嬌鐢ㄦ墿灞曞悕hbm.xml.
鏄犲皠鏂囦歡闇瑕佸湪hibernate.cfg.xml涓敞鍐?鏈濂戒笌棰嗗煙瀵硅薄綾繪斁鍦ㄥ悓涓鐩綍涓?榪欐牱淇敼璧鋒潵寰堟柟渚?
棰嗗煙瀵硅薄鍜岀被
public class User{
// ID
private String id;
// 鍚嶇О
private String name;
// 瀵嗙爜
private String password;
// 閭歡
private String email;
// 涓婃鐧誨綍鏃墮棿
private String lastLoginTime;
// 涓婃鐧誨綍ip
private String lastLoginIp;
public User(String name,String password,String email){
this.name=name;
this.password=password;
this.email=email;
}
}
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.User"
table="USERTABLE_OKB" lazy="false">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="name" />
<property name="password" column="pswd" />
<property name="email" column="email" />
<property name="lastLoginTime" column="lastLoginTime" />
<property name="lastLoginIp" column="lastLoginIp" />
</class></hibernate-mapping>
hibernate.cfg.xml涓殑鏄犲皠鏂囦歡璁劇疆
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="java:comp/env/hibernate/SessionFactory">
<!-- JNDI鏁版嵁婧愯緗?-->
<property name="connection.datasource">
java:comp/env/jdbc/myoracle
</property>
<!-- SQL鏂硅█錛宱rg.hibernate.dialect.OracleDialect閫傚悎鎵鏈塐racle鏁版嵁搴?-->
<property name="dialect">
org.hibernate.dialect.OracleDialect
</property>
<!-- 鏄劇ずSQL璇彞 -->
<property name="show_sql">true</property>
<!-- SQL璇彞鏁村艦 -->
<property name="format_sql">true</property>
<!-- 鍚姩鏃跺垱寤鴻〃.榪欎釜閫夐」鍦ㄧ涓嬈″惎鍔ㄧ▼搴忔椂鏀懼紑,浠ュ悗鍒囪鍏抽棴 -->
<!-- <property name="hbm2ddl.auto">create</property> -->
<!-- 鎸佷箙鍖栫被鐨勬槧灝勬枃浠?-->
<mapping resource="com/sitinspring/domain/User.hbm.xml" />
<mapping resource="com/sitinspring/domain/Privilege.hbm.xml" />
<mapping resource="com/sitinspring/domain/Article.hbm.xml" />
<mapping resource="com/sitinspring/domain/Record.hbm.xml" />
</session-factory>
</hibernate-configuration>
鏄犲皠鏂囦歡鐗╃悊浣嶇疆紺轟緥
鏄犲皠鏂囦歡鐨勫熀鏈粨鏋?/strong>
鏄犲皠瀹氫箟浠ibernate-mapping鍏冪礌寮濮? package灞炴ц緗槧灝勪腑闈為檺瀹氱被鍚嶇殑榛樿鍖?璁劇疆榪欎釜灞炴у悗,瀵逛簬鏄犲皠鏂囦歡涓垪鍑虹殑鍏跺畠鎸佷箙鍖栫被,鍙渶緇欏嚭綾誨悕鍗沖彲.瑕佸紩鐢ㄦ寚瀹氬寘澶栫殑鎸佷箙鍖栫被,蹇呴』鍦ㄦ槧灝勬枃浠朵腑鎻愪緵鍏ㄩ檺瀹氱被鍚?
鍦╤ibernate-mapping鏍囩涔嬪悗鏄痗lass鏍囩.class鏍囩寮濮嬫寚瀹氭寔涔呭寲綾葷殑鏄犲皠瀹氫箟.table灞炴ф寚瀹氱敤浜庡瓨鍌ㄥ璞$姸鎬佺殑鍏崇郴琛?class鍏冪礌鏈夊緢澶氬睘鎬?涓嬮潰灝嗛愪釜浠嬬粛.
ID
Id鍏冪礌鎻忚堪浜嗘寔涔呭寲綾葷殑涓葷爜浠ュ強浠栦滑鐨勫煎浣曠敓鎴?姣忎釜鎸佷箙鍖栫被蹇呴』鏈変竴涓狪D鍏冪礌,瀹冨0鏄庝簡鍏崇郴琛ㄧ殑涓葷爜.濡傚彸:
Name灞炴ф寚瀹氫簡鎸佷箙鍖栫被涓敤浜庝繚瀛樹富鐮佸肩殑灞炴?璇ュ厓绱犺〃鏄?User綾諱腑鏈変竴涓悕涓篿d鐨勫睘鎬?濡傛灉涓葷爜瀛楁涓庡璞″睘鎬т笉鍚?鍒欏彲浠ヤ嬌鐢╟olumn灞炴?
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
鐢熸垚鍣?/strong>
鐢熸垚鍣ㄥ垱寤烘寔涔呭寲綾葷殑涓葷爜鍊?Hibernate鎻愪緵浜嗗涓敓鎴愬櫒瀹炵幇,瀹冧滑閲囩敤浜嗕笉鍚岀殑鏂規硶鏉ュ垱寤轟富鐮佸?鏈夌殑鏄嚜澧為暱寮忕殑,鏈夌偣鍒涘緩鍗佸叚榪涘埗瀛楃涓? 榪樺彲浠ヨ澶栫晫鐢熸垚騫舵寚瀹氬璞D,鍙﹀榪樻湁涓縐峉elect鐢熸垚鍣ㄤ綘閭d釜浠庢暟鎹簱瑙﹀彂鍣╰rigger媯绱㈠兼潵鑾峰緱涓葷爜鍊?
鍙寵竟浣跨敤浜嗙敤涓涓?28-bit鐨刄UID綆楁硶鐢熸垚瀛楃涓茬被鍨嬬殑鏍囪瘑絎︼紝 榪欏湪涓涓綉緇滀腑鏄敮涓鐨勶紙浣跨敤浜咺P鍦板潃錛夈俇UID琚紪鐮佷負涓涓?2浣?6榪涘埗鏁板瓧鐨勫瓧絎︿覆 .榪欏瀛楁綾誨瀷鏄瓧絎︿覆鐨刬d瀛楁鐗瑰埆鏈夋晥.UUID浣滀負ID瀛楁涓婚敭鏄潪甯稿悎閫傜殑錛屾瘮鑷姩鐢熸垚鐨刲ong綾誨瀷id鏂瑰紡瑕佸ソ銆?/p>
UUID紺轟緥
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
鑷姩澧為暱鐨刬d
<id name="id" column="ID" type="long">
<generator class="native"/>
</id>
灞炴?/strong>
鍦ㄦ槧灝勫畾涔変腑,property鍏冪礌涓庢寔涔呭寲瀵硅薄鐨勪竴涓睘鎬у搴?name琛ㄧず瀵硅薄鐨勫睘鎬у悕,column琛ㄧず瀵瑰簲琛ㄤ腑鐨勫垪(瀛楁),type灞炴ф寚瀹氫簡灞炴х殑瀵硅薄綾誨瀷,濡傛灉type琚拷鐣ョ殑璇?Hibernate灝嗕嬌鐢ㄨ繍琛岄樁孌靛弽灝勬満鍒舵潵鍒ゆ柇綾誨瀷.
<property name="name" column="name" />
<property name="password" column="pswd" />
<property name="email" column="email" />
<property name="lastLoginTime" column="lastLoginTime" />
<property name="lastLoginIp" column="lastLoginIp" />
鍦ㄥ垱寤篐ibernate欏圭洰涔嬪墠錛屾垜浠渶瑕佷粠緗戠珯鑾峰緱鏈鏂扮殑Hibernate鐗堟湰銆侶ibernate涓婚〉鏄痺ww.hibernate.org錛屾壘鍒板叾鑿滃崟涓殑download榪炴帴錛岄夋嫨鏈鏂扮殑Hibernate鐗堟湰鍗沖彲銆備笅杞藉悗灝嗗叾瑙e紑鍒頒竴涓洰褰曚腑銆?br /> 鍙寵竟鏄В寮鍚庣殑涓昏鐩綍銆傚叾涓渶閲嶈鐨勬槸hibernate.jar錛屽畠鍖呭惈鍏ㄩ儴妗嗘灦浠g爜錛沴ib鐩綍錛屽寘鎷琀ibernate鐨勬墍鏈変緷璧栧簱錛沝oc鐩綍錛屽寘鎷琂avDocs鍜屽弬鑰冩枃妗c?/p>
Hibernate鐨勯厤緗枃浠?/strong>
Hibernate鑳藉涓庝粠搴旂敤鏈嶅姟鍣紙鍙楁帶鐜錛屽Tomcat錛學eblogic錛孞Boss錛夊埌鐙珛鐨勫簲鐢ㄧ▼搴忥紙闈炲彈鎺х幆澧冿紝濡傜嫭绔嬪簲鐢ㄧ▼搴忥級鐨勫悇縐嶇幆澧冨拰璋愬伐浣滐紝榪欏湪涓瀹氱▼搴︿笂瑕佸綊鍔熶簬鍏墮厤緗枃浠秇ibernate.cfg.xml錛岄氳繃鐗瑰畾鐨勮緗瓾ibernate灝辮兘涓庡悇縐嶇幆澧冮厤鍚堛傚彸杈規槸hibernate.cfg.xml鐨勪竴涓ず渚嬨?br /> 閰嶇疆Hibernate鐨勬墍鏈夊睘鎬ф槸涓欏硅壈宸ㄧ殑浠誨姟錛屼笅闈㈠皢渚濇浠嬬粛Hibernate閮ㄧ講灝嗙敤鍒扮殑鍩烘湰閰嶇疆銆?/p>
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="java:comp/env/hibernate/SessionFactory">
<!-- JNDI鏁版嵁婧愯緗?-->
<property name="connection.datasource">
java:comp/env/jdbc/myoracle
</property>
<!-- SQL鏂硅█錛宱rg.hibernate.dialect.OracleDialect閫傚悎鎵鏈塐racle鏁版嵁搴?-->
<property name="dialect">
org.hibernate.dialect.OracleDialect
</property>
<!-- 鏄劇ずSQL璇彞 -->
<property name="show_sql">true</property>
<!-- SQL璇彞鏁村艦 -->
<property name="format_sql">true</property>
<!-- 鍚姩鏃跺垱寤鴻〃.榪欎釜閫夐」鍦ㄧ涓嬈″惎鍔ㄧ▼搴忔椂鏀懼紑,浠ュ悗鍒囪鍏抽棴 -->
<!-- <property name="hbm2ddl.auto">create</property> -->
<!-- 鎸佷箙鍖栫被鐨勯厤緗枃浠?-->
<mapping resource="com/sitinspring/domain/User.hbm.xml" />
<mapping resource="com/sitinspring/domain/Privilege.hbm.xml" />
<mapping resource="com/sitinspring/domain/Article.hbm.xml" />
<mapping resource="com/sitinspring/domain/Record.hbm.xml" />
</session-factory>
</hibernate-configuration>
浣跨敤Hibernate綆$悊鐨凧DBC榪炴帴
鍙寵竟閰嶇疆鏂囦歡涓殑Database connection settings 閮ㄥ垎鍒跺畾浜咹ibernate綆$悊鐨凧DBC榪炴帴錛?榪欏湪闈炲彈鎺х幆澧冨妗岄潰搴旂敤紼嬪簭涓緢甯歌銆?br />
鍏朵腑鍚勯」灞炴т負錛?br />
connection.driver_class錛氱敤浜庣壒瀹氭暟鎹簱鐨凧DBC榪炴帴綾?br />
connection.url錛氭暟鎹簱鐨勫畬鏁碕DBC URL
connection.username錛氱敤浜庤繛鎺ュ埌鏁版嵁搴撶殑鐢ㄦ埛鍚?br />
connection.password錛氱敤鎴峰瘑鐮?/p>
榪欑鏂規鍙敤浜庨潪鍙楁帶鐜鍜屽熀鏈祴璇曪紝浣嗕笉瀹滃湪鐢熶駭鐜涓嬌鐢ㄣ?/p>
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
銆傘傘傘傘傘傘傘?/p>
</session-factory>
</hibernate-configuration>
浣跨敤JNDI 鏁版嵁婧?/strong>
鍦ㄥ彈鎺х幆澧冧腑錛屾垜浠彲浠ヤ嬌鐢ㄥ鍣ㄦ彁渚涚殑鏁版嵁婧愶紝榪欏皢浣挎暟鎹簱璁塊棶鏇村姞蹇嵎錛屽彸杈瑰氨鏄嬌鐢═omcat鎻愪緵鐨勬暟鎹簮鐨勯厤緗儴鍒嗐?/p>
闄勶細Server.Xml涓殑鏁版嵁婧愯緗?/p>
<Context path="/MyTodoes" reloadable="true" docBase="E:\Program\Programs\MyTodoes" workDir="E:\Program\Programs\MyTodoes\work" >
<Resource name="jdbc/myoracle" auth="Container"
type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@192.168.104.173:1521:orcl"
username="hy" password="123456" maxActive="20" maxIdle="10"
maxWait="-1"/>
</Context>
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="java:comp/env/hibernate/SessionFactory">
<!-- JNDI鏁版嵁婧愯緗?-->
<property name="connection.datasource">
java:comp/env/jdbc/myoracle
</property>
<!-- SQL鏂硅█錛宱rg.hibernate.dialect.OracleDialect閫傚悎鎵鏈塐racle鏁版嵁搴?-->
<property name="dialect">
org.hibernate.dialect.OracleDialect
</property>
</hibernate-configuration>
鏁版嵁搴撴柟璦
Dialect灞炴ц兘鍛婄煡Hibernate鎵ц鐗瑰畾鐨勬搷浣滃鍒嗛〉鏃墮渶瑕佷嬌鐢ㄩ偅縐峉QL鏂硅█錛屽MySql鐨勫垎欏墊柟妗堝拰Oracle鐨勫ぇ鐩稿緞搴紝濡傝緗敊璇垨娌℃湁璁劇疆涓瀹氫細瀵艱嚧闂銆?/p>
闄勫綍錛氬父瑙佺殑鏁版嵁搴撴柟璦
DB2 錛歰rg.hibernate.dialect.DB2Dialect
MySQL 錛歰rg.hibernate.dialect.MySQLDialect
Oracle (any version) 錛歰rg.hibernate.dialect.OracleDialect
Oracle 9i/10g 錛歰rg.hibernate.dialect.Oracle9Dialect
Microsoft SQL Server 錛歰rg.hibernate.dialect.SQLServerDialect
Sybase Anywhere 錛歰rg.hibernate.dialect.SybaseAnywhereDialect
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="java:comp/env/hibernate/SessionFactory">
<!-- JNDI鏁版嵁婧愯緗?-->
<property name="connection.datasource">
java:comp/env/jdbc/myoracle
</property>
<!-- SQL鏂硅█錛宱rg.hibernate.dialect.OracleDialect閫傚悎鎵鏈塐racle鏁版嵁搴?-->
<property name="dialect">
org.hibernate.dialect.OracleDialect
</property>
<!-- 鏄劇ずSQL璇彞 -->
<property name="show_sql">true</property>
<!-- SQL璇彞鏁村艦 -->
<property name="format_sql">true</property>
</hibernate-configuration>
鍏跺畠灞炴?/strong>
show_sql錛氬畠鍙互鍦ㄧ▼搴忚繍琛岃繃紼嬩腑鏄劇ず鍑虹湡姝f墽琛岀殑SQL璇彞鏉ワ紝寤鴻灝嗚繖涓睘鎬у緇堟墦寮錛屽畠灝嗘湁鐩婁簬閿欒璇婃柇銆?/p>
format_sql錛氬皢榪欎釜灞炴ц緗負true鑳藉皢杈撳嚭鐨凷QL璇彞鏁寸悊鎴愯鑼冪殑褰㈢姸錛屾洿鏂逛究鐢ㄤ簬鏌ョ湅SQL璇彞銆?/p>
hbm2ddl.auto錛氬皢鍏惰緗負create鑳藉湪紼嬪簭鍚姩鏄牴鎹被鏄犲皠鏂囦歡鐨勫畾涔夊垱寤哄疄浣撳璞″搴旂殑琛紝鑰屼笉闇瑕佹墜鍔ㄥ幓寤鴻〃錛岃繖鍦ㄧ▼搴忓垵嬈″畨瑁呮椂寰堟柟渚褲?br /> 濡傛灉琛ㄥ凡緇忓垱寤哄茍鏈夋暟鎹紝鍒囪鍏抽棴榪欎釜灞炴э紝鍚﹀垯鍦ㄥ垱寤鴻〃鏃朵篃浼氭竻闄ゆ帀鍘熸湁鐨勬暟鎹紝榪欎篃璁鎬細瀵艱嚧寰堜弗閲嶇殑鍚庢灉銆?br /> 浠庡悗鏋滃彲鑳藉甫鏉ョ殑褰卞搷鏉ヨ冭檻錛屽湪鐢ㄦ埛澶勫畨瑁呭畬涓嬈″悗灝卞簲璇ュ垹闄ゆ帀榪欎釜鑺傜偣
<hibernate-configuration>
<session-factory name="java:comp/env/hibernate/SessionFactory">
銆傘傘傘傘傘?/p>
<!-- 鏄劇ずSQL璇彞 -->
<property name="show_sql">true</property>
<!-- SQL璇彞鏁村艦 -->
<property name="format_sql">true</property>
<!-- 鍚姩鏃跺垱寤鴻〃.榪欎釜閫夐」鍦ㄧ涓嬈″惎鍔ㄧ▼搴忔椂鏀懼紑,浠ュ悗鍒囪鍏抽棴 -->
<!-- <property name="hbm2ddl.auto">create</property> -->
銆傘傘傘傘傘?br />
</hibernate-configuration>
鏄犲皠瀹氫箟
鍦╤ibernate.cfg.xml涓紝榪樻湁涓涓噸瑕侀儴鍒嗗氨鏄槧灝勫畾涔夛紝榪欎簺鏂囦歡鐢ㄤ簬鍚慔ibernate鎻愪緵鍏充簬灝嗗璞℃寔涔呭寲鍒板叧緋繪暟鎹簱鐨勪俊鎭?br /> 涓鑸潵璇達紝棰嗗煙灞傛湁涓涓鍩熷璞″氨鏈変竴涓槧灝勬枃浠訛紝寤鴻灝嗗畠浠斁鍦ㄥ悓涓鐩綍錛坉omain錛変笅浠ヤ究鏌ラ槄鍜屼慨鏀癸紝鏄犲皠鏂囦歡鐨勫懡鍚嶈鍒欐槸錛氭寔涔呭寲綾葷殑綾誨悕+.hbm.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="java:comp/env/hibernate/SessionFactory">
<!-- JNDI鏁版嵁婧愯緗?-->
<property name="connection.datasource">
java:comp/env/jdbc/myoracle
</property>
銆傘傘傘傘傘?br />
<!-- 鎸佷箙鍖栫被鐨勯厤緗枃浠?-->
<mapping resource="com/sitinspring/domain/User.hbm.xml" />
<mapping resource="com/sitinspring/domain/Privilege.hbm.xml" />
<mapping resource="com/sitinspring/domain/Article.hbm.xml" />
<mapping resource="com/sitinspring/domain/Record.hbm.xml" />
</session-factory>
</hibernate-configuration>
鏈枃鍋囧畾璇昏呭凡緇忕啛鐭ヤ互涓嬬煡璇?/p>
鑳藉鐔熺粌浣跨敤JDBC鍒涘緩Java搴旂敤紼嬪簭錛?br /> 鍒涘緩榪囦互鏁版嵁搴撲負涓績鐨勫簲鐢?br /> 鐞嗚В鍩烘湰鐨勫叧緋葷悊璁哄拰緇撴瀯鍖栨煡璇㈣璦SQL 錛圫trutured Query Language錛?/p>
Hibernate
Hibernate鏄竴涓敤浜庡紑鍙慗ava搴旂敤鐨勫璞?鍏崇郴鏄犲皠妗嗘灦銆傚畠閫氳繃鍦ㄦ暟鎹簱涓負寮鍙戜漢鍛樺瓨鍌ㄥ簲鐢ㄥ璞★紝鍦ㄦ暟鎹簱鍜屽簲鐢ㄤ箣闂存彁渚涗簡涓搴фˉ姊侊紝寮鍙戜漢鍛樹笉蹇呯紪鍐欏ぇ閲忕殑浠g爜鏉ュ瓨鍌ㄥ拰媯绱㈠璞★紝鐪佷笅鏉ョ殑綺懼姏鏇村鐨勬斁鍦ㄩ棶棰樻湰韜笂銆?/p>
鎸佷箙鍖栦笌鍏崇郴鏁版嵁搴?/strong>
鎸佷箙鍖栫殑甯歌瀹氫箟錛氫嬌鏁版嵁鐨勫瓨媧繪椂闂磋秴榪囧垱寤鴻鏁版嵁鐨勮繘紼嬬殑瀛樻椿鏃墮棿銆傛暟鎹寔涔呭寲鍚庡彲浠ラ噸鏂拌幏寰楀畠錛涘鏋滃鐣岃繘紼嬫病鏈変慨鏀瑰畠錛屽畠灝嗕笌鎸佷箙鍖栦箣鍓嶇浉鍚屻傚浜庝竴鑸簲鐢ㄦ潵璇達紝鎸佷箙鍖栨寚鐨勬槸灝嗘暟鎹瓨鍌ㄥ湪鍏崇郴鏁版嵁搴撲腑銆?br /> 鍏崇郴鏁版嵁搴撴槸涓虹鐞嗘暟鎹岃璁$殑錛屽畠鍦ㄥ瓨鍌ㄦ暟鎹柟闈㈠緢嫻佽錛岃繖涓昏褰掑姛浜庢槗浜庝嬌鐢⊿QL鏉ュ垱寤哄拰璁塊棶銆?br /> 鍏崇郴鏁版嵁搴撲嬌鐢ㄧ殑妯″瀷琚О涓哄叧緋繪ā鍨嬶紝瀹冧嬌鐢ㄤ簩緇磋〃鏉ヨ〃紺烘暟鎹傝繖縐嶆暟鎹昏緫瑙嗗浘琛ㄧず浜嗙敤鎴峰浣曠湅寰呭寘鍚殑鏁版嵁銆傝〃鍙互閫氳繃涓葷爜鍜屽鐮佺浉浜掑叧鑱斻備富鐮佸敮涓鐨勬爣璇嗕簡琛ㄤ腑鐨勪竴琛岋紝鑰屽鐮佹槸鍙︿竴涓〃涓殑涓葷爜銆?/p>
瀵硅薄/鍏崇郴闃繪姉涓嶅尮閰?/strong>
鍏崇郴鏁版嵁搴撴槸涓虹鐞嗘暟鎹璁$殑錛屽畠閫傚悎浜庣鐞嗘暟鎹傜劧鑰岋紝鍦ㄩ潰鍚戝璞$殑搴旂敤涓紝灝嗗璞℃寔涔呭寲涓哄叧緋繪ā鍨嬪彲鑳戒細閬囧埌闂銆傝繖涓棶棰樼殑鏍規簮鏄洜涓哄叧緋繪暟鎹簱綆$悊鏁版嵁錛岃岄潰鍚戝璞$殑搴旂敤鏄負涓氬姟闂寤烘ā鑰岃璁$殑銆傜敱浜庤繖涓ょ鐩殑涓嶅悓錛岃浣胯繖涓や釜妯″瀷鍗忓悓宸ヤ綔鍙兘鍏鋒湁鎸戞垬鎬с傝繖涓棶棰樿縐頒負 瀵硅薄/鍏崇郴闃繪姉涓嶅尮閰嶏紙Object/relational impedance mismatch錛夋垨綆縐頒負闃繪姉涓嶅尮閰?/p>
闃繪姉涓嶅尮閰嶇殑鍑犱釜鍏稿瀷鏂歸潰
鍦ㄥ簲鐢ㄤ腑杞繪槗瀹炵幇鐨勫璞$浉鍚屾垨鐩哥瓑錛岃繖鏍風殑鍏崇郴鍦ㄥ叧緋繪暟鎹簱涓笉瀛樺湪銆?br /> 鍦ㄩ潰鍚戝璞¤璦鐨勪竴欏規牳蹇冪壒鎬ф槸緇ф壙錛岀戶鎵垮緢閲嶈錛屽洜涓哄畠鍏佽鍒涘緩闂鐨勭簿紜ā鍨嬶紝鍚屾椂鍙互鍦ㄥ眰嬈$粨鏋勪腑鑷笂鑰屼笅鐨勫叡浜睘鎬у拰琛屼負銆傝屽叧緋繪暟鎹簱涓嶆敮鎸佺戶鎵跨殑姒傚康銆?br /> 瀵硅薄涔嬮棿鍙互杞繪槗鐨勫疄鐜頒竴瀵逛竴錛屼竴瀵瑰鍜屽瀵瑰鐨勫叧鑱斿叧緋伙紝鑰屾暟鎹簱騫朵笉鐞嗚В榪欎簺錛屽畠鍙煡閬撳鐮佹寚鍚戜富鐮併?/p>
瀵硅薄/鍏崇郴鏄犲皠
鍓嶉〉鍒椾婦浜嗕竴浜涢樆鎶椾笉鍖歸厤鐨勯棶棰橈紝褰撶劧寮鍙戜漢鍛樻槸鍙互瑙e喅榪欎簺闂錛屼絾榪欎竴榪囩▼騫朵笉瀹規槗銆傚璞?鍏崇郴鏄犲皠錛圤bject/Relational Mapping錛夊氨鏄負瑙e喅榪欎簺闂鑰屽紑鍙戠殑銆?br /> ORM鍦ㄥ璞℃ā鍨嬪拰鍏崇郴妯″瀷涔嬮棿鏋惰搗浜嗕竴搴фˉ姊侊紝璁╁簲鐢ㄨ兘澶熺洿鎺ユ寔涔呭寲瀵硅薄錛岃屼笉瑕佹眰鍦ㄥ璞″拰鍏崇郴涔嬮棿榪涜杞崲銆侶ibernate灝辨槸ORM宸ュ叿涓渶鎴愬姛鐨勪竴縐嶃傚畠鐨勪富瑕佷紭鐐規槸綆鍗曪紝鐏墊椿錛屽姛鑳藉畬澶囧拰楂樻晥銆?/p>
Hibernate鐨勪紭鐐逛箣涓錛氱畝鍗?/strong>
Hibernate涓嶅儚鏈変簺鎸佷箙鍖栨柟妗堥偅鏍烽渶瑕佸緢澶氱殑綾誨拰閰嶇疆灞炴э紝瀹冨彧闇瑕佷竴涓繍琛岄樁孌甸厤緗枃浠跺凡緇忎負姣忎釜瑕佹寔涔呭寲鐨勫簲鐢ㄥ璞℃寚瀹氫竴涓猉ML鏍煎紡鐨勬槧灝勬枃浠躲?br /> 鏄犲皠鏂囦歡鍙互寰堢煭錛岃妗嗘灦鍐沖畾鏄犲皠鐨勫叾瀹冨唴瀹癸紝涔熷彲浠ラ氳繃鍒跺畾棰濆鐨勫睘鎬э紝濡傚睘鎬х殑鍙夊垪鍚嶏紝鍚戞鏋舵彁渚涙洿澶氫俊鎭傚鍙沖氨鏄竴涓槧灝勬枃妗g殑紺轟緥銆?/p>
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.auction">
<class name="com.sitinspring.domain.User"
table="USERTABLE_OKB" lazy="false">
<id name="id" column="ID" >
<generator class="uuid.hex"/>
</id>
<property name="name" column="name" />
<property name="password" column="pswd" />
<property name="email" column="email" />
<property name="lastLoginTime" column="lastLoginTime" />
<property name="lastLoginIp" column="lastLoginIp" />
</class>
</hibernate-mapping>
Hibernate鐨勪紭鐐逛箣浜岋細鍔熻兘瀹屽
Hibernate鏀寔鎵鏈夌殑闈㈠悜瀵硅薄鐗規э紝鍖呮嫭緇ф壙錛岃嚜瀹氫箟瀵硅薄綾誨瀷鍜岄泦鍚堛傚畠鍙互璁╀綘鍒涘緩妯″瀷鏃朵笉蹇呰冭檻鎸佷箙灞傜殑灞闄愭с?br /> Hibernate鎻愪緵浜嗕竴涓悕涓篐QL鐨勬煡璇㈣璦錛屽畠涓嶴QL闈炲父鐩鎬技錛屽彧鏄敤瀵硅薄灞炴у悕浠f浛浜嗚〃鐨勫垪銆傚緢澶氶氳繃SQL瀹炵幇鐨勫父鐢ㄥ姛鑳介兘鑳界敤HQL瀹炵幇銆?/p>
Hibernate鐨勪紭鐐逛箣涓夛細楂樻晥
Hibernate浣跨敤鎳掓儼鍔犺澆鎻愰珮浜嗘ц兘錛屽湪Hibernate騫朵笉鍦ㄥ姞杞界埗瀵硅薄鏃跺氨鍔犺澆瀵硅薄闆嗗悎錛岃屽彧鍦ㄥ簲鐢ㄩ渶瑕佽闂椂鎵嶇敓鎴愩傝繖灝遍伩鍏嶄簡媯绱笉蹇呰鐨勫璞¤屽獎鍝嶆ц兘銆?br /> Hibernate鍏佽媯绱富瀵硅薄鏃墮夋嫨鎬х殑紱佹媯绱㈠叧鑱旂殑瀵硅薄錛岃繖涔熸槸涓欏規敼鍠勬ц兘鐨勭壒鎬с?br /> 瀵硅薄緙撳瓨鍦ㄦ彁楂樺簲鐢ㄦц兘鏂歸潰涔熷彂鎸ヤ簡寰堝ぇ鐨勪綔鐢ㄣ侶ibernate鏀寔鍚勭寮婧愬拰緙撳瓨浜у搧錛屽彲涓烘寔涔呭寲綾繪垨鎸佷箙鍖栧璞¢泦鍚堝惎鐢ㄧ紦瀛樸?/p>
鎬葷粨
鍦ㄥ悓涓鎬э紝緇ф壙鍜屽叧鑱斾笁鏂歸潰錛屽璞℃ā鍨嬪拰鍏崇郴妯″瀷瀛樺湪鐫闃繪姉涓嶅尮閰嶏紝榪欐槸浼楀ORM妗嗘灦鑷村姏瑙e喅鐨勯棶棰橈紝hibernate鏄繖浜涙柟妗堜腑鏈鎴愬姛鐨勪竴涓紝瀹冪殑涓昏浼樼偣鏄畝鍗曪紝鐏墊椿錛屽姛鑳藉畬澶囧拰楂樻晥銆?br />
浣跨敤Hibernate涓嶈姹傞鍩熷璞″疄鐜扮壒鍒殑鎺ュ彛鎴栦嬌鐢ㄥ簲鐢ㄦ湇鍔″櫒錛屽畠鏀寔闆嗗悎錛岀戶鎵匡紝鑷畾涔夋暟鎹被鍨嬶紝騫舵惡甯︿竴縐嶅己澶х殑鏌ヨ璇█HQL錛岃兘鍑忓皯寰堝鎸佷箙鍖栨柟闈㈢殑宸ヤ綔閲忥紝浣跨▼搴忓憳鑳芥妸鏇村綺懼姏杞Щ鍒伴棶棰樻湰韜笂鏉ャ?/p>