日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python映射实体类_【HIBERNATE框架开发之二】第一个HIBERNATE-ANNONATION项目(采用@ENTITY、@ID直接映射实体类)...

發布時間:2023/12/2 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python映射实体类_【HIBERNATE框架开发之二】第一个HIBERNATE-ANNONATION项目(采用@ENTITY、@ID直接映射实体类)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緊接上一篇,這里Himi直接copy上一篇創建的HelloHibernate項目,然后改名為:HelloAnnonation,Ok;

OK,準備工作:

首先第一步,繼續再我們自定義的user libraries 中添加Annotation所需的包,如下3個jar包(共11個包):

/hibernate-annotations-3.4.0.GA/hibernate-annotations.jar ? ? (核心包)

/hibernate-annotations-3.4.0.GA/lib/ejb3-persistence.jar ? (jpa)

/hibernate-annotations-3.4.0.GA/lib/hibernate-commons-annotations.jar ? (反射所需的包)

如下圖 ;

然后我們新建一個People類,如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

packagecom.himi;

publicclassPeople{

privateintid;

privateStringname;

privateintage;

privateStringtitle;

privateStringbirthday;

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

publicStringgetTitle(){

returntitle;

}

publicvoidsetTitle(Stringtitle){

this.title=title;

}

publicStringgetBirthday(){

returnbirthday;

}

publicvoidsetBirthday(Stringbirthday){

this.birthday=birthday;

}

}

最后準備工作在我們數據庫中新建一個對應映射people實體類的表:(不贅述,直接看操作過程)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

mysql>usehibernate;

Readingtableinformationforcompletionoftableandcolumnnames

Youcanturnoffthisfeaturetogetaquickerstartupwith-A

Databasechanged

mysql>createtablepeople(idintprimarykey,namevarchar(20),ageint,titlevarchar(20),birthdayvarchar(20));

QueryOK,0rowsaffected(0.06sec)

mysql>describepeople;

+----------+-------------+------+-----+---------+-------+

|Field|Type|Null|Key|Default|Extra|

+----------+-------------+------+-----+---------+-------+

|id|int(11)|NO|PRI|NULL||

|name|varchar(20)|YES||NULL||

|age|int(11)|YES||NULL||

|title|varchar(20)|YES||NULL||

|birthday|varchar(20)|YES||NULL||

+----------+-------------+------+-----+---------+-------+

5rowsinset(0.01sec)

準備工作完成之后,那么如果通常我們會建立People.hbm.xml來對應數據庫的組件和屬性,然后將People在hibernate.cfg.xml配置文件中使用mapping resource聲明我們有一個被加了映射,People是實體類;

但是本篇我們使用Annotation將不再創建對應的實體類對應數據庫的xml,而是直接在People類中聲明實體類就可以啦,修改People.java文件如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

packagecom.himi;

importjavax.persistence.Entity;

importjavax.persistence.Id;

@Entity

publicclassPeople{

privateintid;

privateStringname;

privateintage;

privateStringtitle;

privateStringbirthday;

@Id

publicintgetId(){

returnid;

}

publicvoidsetId(intid){

this.id=id;

}

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

publicintgetAge(){

returnage;

}

publicvoidsetAge(intage){

this.age=age;

}

publicStringgetTitle(){

returntitle;

}

publicvoidsetTitle(Stringtitle){

this.title=title;

}

publicStringgetBirthday(){

returnbirthday;

}

publicvoidsetBirthday(Stringbirthday){

this.birthday=birthday;

}

}

仔細觀察,發現只有兩處有改動,就是添加了一個 @Entity ?和 @Id

@Entity ? 表示本類是個實體類,是javax.persistence.Entity

@Id ? 在組件getId ()函數上約定俗成加入注解 @Id

接著我們繼續在hibernate.cfg.xml配置文件中聲明我們的People是個映射實體類:

1

2

3

<mappingresource="com/himi/Teacher.hbm.xml"/><!--這里是將需要mapping的文件進行再次聲明-->

<mappingclass="com.himi.People"/><!--這里是聲明我們的People是個映射實體類-->

上面的Teacher是上一篇介紹的,People是本篇中新建的實體類,務必注意,兩種方式的區別:

一個是 ?? ? mapping resource , 一個是 mapping class ?;

一個路徑是 ?com/himi/Teacher.hbm.xml ? 一個路徑的 com.himi.People ;

最后一步,新建一個測試People的man類,名字為MainTestPeople.java:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

importorg.hibernate.Session;

importorg.hibernate.SessionFactory;

importorg.hibernate.cfg.AnnotationConfiguration;

importorg.hibernate.cfg.Configuration;

importcom.himi.People;

publicclassMainTestPeople{

/**

* @param args

*/

publicstaticvoidmain(String[]args){

Peoplepeople=newPeople();// 新建我們需要存儲的類對象,并且設置其對象的一些屬性

people.setId(2);

people.setName("Himi");

people.setAge(22);

people.setTitle("CTO");

people.setBirthday("1990-01-01");

// Configuration主要用以讀取配置文件

//AnnotationConfiguration 專用于讀取與Annotation相關的配置

Configurationcfg=newAnnotationConfiguration();

SessionFactorysf=cfg.configure().buildSessionFactory();

// 這里注意了,cfg.configure()讀取配置文件的時候,如果你的hibernate的文件名不采用默認的“hibernate.cfg.xml”的話,那么這里傳入你定義的配置文件路徑

// buildSessionFactory();得到一個創建Session的工場

Sessionss=sf.openSession();// 這里的Session導入import

// org.hibernate.Session;不要使用class經典的,因為可能會過時

ss.beginTransaction();// OK,將操作放入事務中

ss.save(people);// 保存你的對象

ss.getTransaction().commit();// 得到事務并提交

ss.close();// Session關閉

sf.close();// 工廠關閉

}

}

仔細以上觀看代碼,與上一篇測試我們的Teacher 一致,唯一要注意的是?Configuration的實例:

不使用Annotation實例配置對象,我們采用如下獲取Configuration:

Configuration cfg = new Configuration();

使用Annotation時,我們采用如下獲取Configuration:

Configuration cfg = new AnnotationConfiguration();

OK, 右鍵MainTestPeople, run as -> Java ?application;

運行結果:

1

Hibernate:insertintoPeople(age,birthday,name,title,id)values(?,?,?,?,?)

ok,監測一下數據庫的People表內是否已經成功插入了信息:

1

2

3

4

5

6

7

8

mysql>select *frompeople;

+----+------+------+-------+------------+

|id|name|age|title|birthday|

+----+------+------+-------+------------+

|1|Himi|23|CTO|1990-01-01|

|2|Himi|22|CTO|1990-01-01|

+----+------+------+-------+------------+

2rowsinset(0.00sec)

沒問題。本篇介紹Annotation第一個項目就到這里,比較eazy,而且Annotation使用起來相當方便!

總結

以上是生活随笔為你收集整理的python映射实体类_【HIBERNATE框架开发之二】第一个HIBERNATE-ANNONATION项目(采用@ENTITY、@ID直接映射实体类)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。