您的位置:首页 > 其它

Hibernate 学习笔记(四)-- 实体层设计之Table per subclass

2010-05-06 13:49 513 查看
关于如何配置请参看:Hibernate
学习笔记(一)--用MyEclipse 6.5+MySQL 5.0的环境跑起来

准备:建表

用MySQL在名为STMS数据库中建表

Titem



Tbook



Tdvd



src/org.lxh.hibernate3.TItem.java

1



package
org.lxh.hibernate3;

2





/** */
/**

3



*
@author
∪∩BUG E-mail: tidelgl@163.com

4



*
@version
Aug 31, 2008 3:27:51 PM

5



* @父类

6



*/

7





public

class
TItem



{

8



9



private
String id;

10



private
String name;

11



private
String manufacturer;

12



13





public
String getId()



{

14



return
id;

15



}

16



17





public

void
setId(String id)



{

18



this
.id
=
id;

19



}

20



21





public
String getName()



{

22



return
name;

23



}

24



25





public

void
setName(String name)



{

26



this
.name
=
name;

27



}

28



29





public
String getManufacturer()



{

30



return
manufacturer;

31



}

32



33





public

void
setManufacturer(String manufacturer)



{

34



this
.manufacturer
=
manufacturer;

35



}

36



37



}

38



src/org.lxh.hibernate3.TBook.java

1



package
org.lxh.hibernate3;

2



3





/** */
/**

4



*
@author
∪∩BUG E-mail: tidelgl@163.com

5



*
@version
Aug 31, 2008 3:31:47 PM @ 继承父类TItem

6



*/

7





public

class
TBook
extends
TItem



{

8



9



private

int
pageCount;

10



11





public

int
getPageCount()



{

12



return
pageCount;

13



}

14



15





public

void
setPageCount(
int
pageCount)



{

16



this
.pageCount
=
pageCount;

17



}

18



}

19



src/org.lxh.hibernate3.TDvd.java

1



package
org.lxh.hibernate3;

2





/** */
/**

3



*
@author
∪∩BUG E-mail: tidelgl@163.com

4



*
@version
Aug 31, 2008 3:34:06 PM

5



* @ 继承父类TItem

6



*/

7





public

class
TDvd
extends
TItem



{

8



9



private
String regionCode;

10



11





public
String getRegionCode()



{

12



return
regionCode;

13



}

14



15





public

void
setRegionCode(String regionCode)



{

16



this
.regionCode
=
regionCode;

17



}

18



19



}

20



src/org.lxh.hibernate3.Titem.hbm.xml

1



xml version="1.0" encoding="utf-8"
?>

2



DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

3



"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>

4



7



<
hibernate-mapping
>

8



9



<
class
name
="org.lxh.hibernate3.TItem"
table
="titem"

10



catalog
="stms"
>

11



<
id
name
="id"
type
="java.lang.String"
>

12



<
column
name
="id"
length
="32"

/>

13



<
generator
class
="assigned"

/>

14



id
>

15



<
property
name
="name"
type
="java.lang.String"
>

16



<
column
name
="name"
length
="20"
not-null
="true"

/>

17



property
>

18



<
property
name
="manufacturer"
type
="java.lang.String"
>

19



<
column
name
="manufacturer"
length
="20"

/>

20



property
>

21



22



28



<
joined-subclass
name
="org.lxh.hibernate3.TBook"

29



table
="TBook"
>

30



<
key
column
="id"
>key
>

31



<
property
name
="pageCount"
type
="int"

32



column
="pagecount"
>

33



property
>

34



joined-subclass
>

35



<
joined-subclass
name
="org.lxh.hibernate3.TDvd"
table
="TDvd"
>

36



<
key
column
="id"
>key
>

37



<
property
name
="regionCode"
type
="string"

38



column
="regioncode"
>

39



property
>

40



joined-subclass
>

41



class
>

42



hibernate-mapping
>

43



src/hibernate.cfg.xml

1



xml version='1.0' encoding='UTF-8'
?>

2



DOCTYPE hibernate-configuration PUBLIC

3



"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

4



"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>

5



6



7



<
hibernate-configuration
>

8



9



<
session-factory
>

10



<
property
name
="connection.username"
>
root
property
>

11



<
property
name
="connection.url"
>

12



jdbc:mysql://localhost:3306/STMS

13



property
>

14



<
property
name
="dialect"
>

15



org.hibernate.dialect.MySQLDialect

16



property
>

17



<
property
name
="myeclipse.connection.profile"
>

18



MySql_localhost

19



property
>

20



<
property
name
="connection.password"
>
root
property
>

21



<
property
name
="connection.driver_class"
>

22



com.mysql.jdbc.Driver

23



property
>

24



<
property
name
="show_sql"
>
true
property
>

25



26



27



<
mapping
resource
="org/lxh/hibernate3/Titem.hbm.xml"

/>

28



29



session-factory
>

30



31



hibernate-configuration
>

src/org.lxh.hibernate3.TItemOperate.java

1



package
org.lxh.hibernate3;

2



3



4



5



import
java.util.Iterator;

6



7



import
org.hibernate.Query;

8



import
org.hibernate.Session;

9



import
org.hibernate.SessionFactory;

10



import
org.hibernate.cfg.Configuration;

11



12





/** */
/**

13



*
@author
∪∩BUG E-mail: tidelgl@163.com

14



*
@version
Aug 31, 2008 4:08:14 PM

15



* @具体操作Hibernate类

16



*/

17





public

class
TItemOperate



{

18



private
Session session;

19



20





public
TItemOperate()



{

21



//

到Hibernate配置文件

22



Configuration config
=

new
Configuration().configure();

23



24



//

全局文件中取出SessionFactory

25



SessionFactory factory
=
config.buildSessionFactory();

26



27



//

SessionFactory取出一个session

28



this
.session
=
factory.openSession();

29



}

30



31



//
插入操


32



//
TBook
和TDvd类都是TItem的子类,所以只需往TItem里插入就可以了.

33





public

void
insert(TItem item)



{

34



//

行语句

35



this
.session.save(item);

36



37



//

始事务.提交事务

38



this
.session.beginTransaction().commit();

39



this
.session.close();

40



}

41



42



//
查询操


43



//
TBook
和TDvd类都是TItem的子类,所以只需查询TItem的ID就可以了.

44





public
TItem QueryById(String id)



{

45



TItem item
=

new
TItem();

46



String hql
=

"
FROM TItem as t WHERE t.id=?
"
;

47



Query q
=

this
.session.createQuery(hql);

48



q.setString(
0
, id);

49



Iterator iter
=
q.list().iterator();

50





if
(iter.hasNext())



{

51



item
=
(TItem)iter.next();

52



}

53



return
item;

54



}

55



}

56



src/org.lxh.hibernate3.Test.java

1



package
org.lxh.hibernate3;

2



3





/** */
/**

4



*
@author
∪∩BUG E-mail: tidelgl@163.com

5



*
@version
Aug 31, 2008 4:26:26 PM

6



* @测试类

7



*/

8





public

class
Test



{

9



10





/** */
/**

11



*
@param
args

12



*/

13





/** */
/**

14



*
@param
args

15



*/

16





public

static

void
main(String[] args)



{

17



18



TItemOperate to
=

new
TItemOperate();

19



20





/**/
/*

21



// 向数据库中插入数据

22



TBook book = new TBook();

23



book.setId("02");

24



book.setName("Hibernate");

25



book.setPageCount(31);

26



book.setManufacturer("Hibernate.org");

27



28



to.insert(book);

29



30



TDvd dvd = new TDvd();

31



dvd.setId("03");

32



dvd.setManufacturer("Apache.org");

33



dvd.setName("Struts2");

34



dvd.setRegionCode("87");

35



36



to.insert(dvd);

37



*/

38



39



//

询数据库

40



TBook book
=
(TBook)to.QueryById(
"
01
"
);

41



System.out.println(book.getName());

42



}

43



44



}

45



例子结构:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐