Hiberante的對象繼承關(guān)系之--TPC一張表表示整個
系統(tǒng)
1697 0
數(shù)據(jù)庫結(jié)構(gòu):
?
create
?
table
?personTPC?(id?
varchar
(
32
),name?
varchar
(
32
),personType?
varchar
(
32
),cardnum?
varchar
(
32
),salary?
double
);
?
<?
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"
>
<!--
?Generated?by?MyEclipse?Hibernate?Tools.???????????????????
-->
<
hibernate-configuration
>
<
session-factory
>
????
<
property?
name
="connection.username"
>
root
</
property
>
????
<
property?
name
="connection.url"
>
????????jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312
&
useUnicode=true
????
</
property
>
????
<
property?
name
="dialect"
>
????????org.hibernate.dialect.MySQLDialect
????
</
property
>
????
<
property?
name
="myeclipse.connection.profile"
>
mysql
</
property
>
????
<
property?
name
="connection.password"
>
1234
</
property
>
????
<
property?
name
="connection.driver_class"
>
????????com.mysql.jdbc.Driver
????
</
property
>
????
<
property?
name
="hibernate.dialect"
>
????????org.hibernate.dialect.MySQLDialect
????
</
property
>
????
<
property?
name
="hibernate.show_sql"
>
true
</
property
>
????
<
property?
name
="current_session_context_class"
>
thread
</
property
>
????
<
property?
name
="jdbc.batch_size"
>
15
</
property
>
????
<
mapping?
resource
="Mapping/TPCSubclass/Person.hbm.xml"
?
/>
</
session-factory
>
</
hibernate-configuration
>
?poj
?
package
?Mapping.TPC;
public
?
class
?Person?...
...
{
??
private
?String?id;
??
private
?String?name;
public
?String?getId()?...
...
{
????
return
?id;
}
public
?
void
?setId(String?id)?...
...
{
????
this
.id?
=
?id;
}
public
?String?getName()?...
...
{
????
return
?name;
}
public
?
void
?setName(String?name)?...
...
{
????
this
.name?
=
?name;
}
}
package
?Mapping.TPC;
public
?
class
?Student?
extends
?Person?...
...
{
??
private
?String?cardnum;
public
?String?getCardnum()?...
...
{
????
return
?cardnum;
}
public
?
void
?setCardnum(String?cardnum)?...
...
{
????
this
.cardnum?
=
?cardnum;
}
}
package
?Mapping.TPC;
public
?
class
?Teacher?
extends
?Person?...
...
{
???
private
?Double?salary;
public
?Double?getSalary()?...
...
{
????
return
?salary;
}
public
?
void
?setSalary(Double?salary)?...
...
{
????
this
.salary?
=
?salary;
}
}
?
Person.hbm.xml
?
<?
xml?version="1.0"?encoding="utf-8"
?>
<!
DOCTYPE?hibernate-mapping?PUBLIC?"-//Hibernate/Hibernate?Mapping?DTD?3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--
?
????Mapping?file?autogenerated?by?MyEclipse?-?Hibernate?Tools
-->
<
hibernate-mapping
>
<
class?
name
="Mapping.TPCSubclass.Person"
?table
="personTPC"
?
>
????
<
id?
name
="id"
?unsaved-value
="null"
>
??????
<
generator?
class
="uuid.hex"
></
generator
>
????
</
id
>
????
<
discriminator?
column
="personType"
?type
="string"
></
discriminator
>
????
<
property?
name
="name"
?type
="string"
?column
="name"
></
property
>
????
<
subclass?
name
="Mapping.TPCSubclass.Student"
?discriminator-value
="student"
>
??????
<
property?
name
="cardnum"
?type
="string"
></
property
>
????
</
subclass
>
?????
<
subclass?
name
="Mapping.TPCSubclass.Teacher"
?discriminator-value
="teacher"
>
??????
<
property?
name
="salary"
?type
="double"
></
property
>
????
</
subclass
>
</
class
>
</
hibernate-mapping
>
?
測試代碼:
?
package
?Mapping.TPCSubclass;
import
?java.io.File;
import
?java.util.Iterator;
import
?org.hibernate.Query;
import
?org.hibernate.Session;
import
?org.hibernate.SessionFactory;
import
?org.hibernate.Transaction;
import
?org.hibernate.cfg.Configuration;
public
?
class
?Test?
...
{
????
public
?
static
?
void
?main(String[]?args)?
...
{
????????String?filePath
=
System.getProperty(
"
user.dir
"
)
+
File.separator
+
"
src/Mapping/TPCSubclass
"
+
File.separator
+
"
hibernate.cfg.xml
"
;
????????File?file
=
new
?File(filePath);
????????System.out.println(filePath);
????????SessionFactory?sessionFactory
=
new
?Configuration().configure(file).buildSessionFactory();
????????Session?session
=
sessionFactory.openSession();
????????Transaction?t
=
session.beginTransaction();
????????Student?stu
=
new
?Student();
????????stu.setCardnum(
"
11111
"
);
????????stu.setName(
"
tom1stu
"
);
????????
????????Teacher?teacher
=
new
?Teacher();
????????teacher.setSalary(
new
?Double(
12345
));
????????teacher.setName(
"
tom1teacher
"
);
????????session.save(stu);
????????session.save(teacher);
????????
//
單獨查找student
????????Query?query
=
session.createQuery(
"
from?Mapping.TPCSubclass.Student
"
);
????????Iterator?iter
=
query.list().iterator();
????????
while
(iter.hasNext())
...
{
????????????Person?person
=
(Person)iter.next();
????????????System.out.println(person.getName());
????????}
????????t.commit();
????????
????}
}
測試結(jié)果:
Hibernate: insert into personTPC (name, cardnum, personType, id) values (?, ?, 'student', ?)
Hibernate: insert into personTPC (name, salary, personType, id) values (?, ?, 'teacher', ?)
Hibernate: select student0_.id as id0_, student0_.name as name0_, student0_.cardnum as cardnum0_ from personTPC student0_ where student0_.personType='student'
tom1stu
Hiberante的對象繼承關(guān)系之--TPC一張表表示整個繼承關(guān)系
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元