锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品无码不卡在线播放HE,亚洲国产成人久久综合一,亚洲国产高清国产拍精品http://www.tkk7.com/kick191/category/44513.html鐧婚珮鑰呭繀鑷崙錛岃榪滆呭繀鑷咯錛屽湪榪欎釜涓栫晫涓婏紝閲嶈鐨勪笉鏄綘姝g珯鍦ㄥ摢閲岋紝鑰屾槸浣犳鏈濅粈涔堟柟鍚戠Щ鍔?/description>zh-cnThu, 22 Apr 2010 16:18:03 GMTThu, 22 Apr 2010 16:18:03 GMT60JPA鍏ラ棬錛?http://www.tkk7.com/kick191/articles/319147.html澶╃嫭澶╃嫭Thu, 22 Apr 2010 12:01:00 GMThttp://www.tkk7.com/kick191/articles/319147.htmlhttp://www.tkk7.com/kick191/comments/319147.htmlhttp://www.tkk7.com/kick191/articles/319147.html#Feedback0http://www.tkk7.com/kick191/comments/commentRss/319147.htmlhttp://www.tkk7.com/kick191/services/trackbacks/319147.html 浠婂ぉ錛岃CallBack錛孞PA涓烘垜浠彁渚涗簡涓浜涘湪榪涜CURD鍓嶅悗鐨勪竴浜沜allback methods錛岃繖浜涙柟娉曞彲浠ュ湪鎴戜滑榪涜鏁版嵁鎸佷箙鍖栧拰鏌ヨ鍓嶅悗錛岃繘琛屼竴浜涙搷浣滐紝姣斿綰綍鏃ュ織銆?br /> 鍏堟潵浠嬬粛鍐欐湁鍑犵callback methods annotation錛?br /> @PerPresist 鎸佷箙鍖栦箣鍓嶈皟鐢ㄨ皟鐢?br /> @PostPersist 鎸佷箙鍖栦箣鍚庯紙瀹樻柟鏂囨。鏄湪Object鐘舵佸彉鎴?Persist 鐘舵侊級
@PostLoad 鏌ヨ涔嬪悗
@PreUpdate鍜孈PostUpdate 榪欎袱涓垎鍒槸鍦ㄦ洿鏂頒箣鍓嶅拰涔嬪悗錛屼笉榪囪繖涓や釜蹇呴』鏄湪PostLoad涔嬪悗錛屽鏌ヨ鍑烘潵鐨勬暟鎹繘琛屾洿鏂幫紝鎵嶄細瑙﹀彂
@PreRemove鍜孈PostReomve 鍒嗗埆鏄垹闄ゅ墠鍜屽垹闄ゅ悗錛堝畼鏂規枃妗f槸Object鐘舵佸彉涓篸eleted 鐘舵侊級

涓嬮潰鏄垜鐨勪緥瀛愶紝褰撶劧榪欓噷鍙湁鍏抽敭浠g爜錛?br /> 2010騫?鏈?2鏃?鏄熸湡鍥?br />
 1 @PrePersist
 2     public void logPrePersist() {
 3         logger.info("PrePersist " + this.getTitle());
 4     }
 5     
 6     @PostPersist
 7     public void logPostPersist() {
 8         logger.info("PostPersist " + this.getTitle());
 9     }
10     
11     @PostLoad
12     public void logPostLoad() {
13         logger.info("PostLoad " + this.getTitle());
14     }
15     
16     @PreUpdate
17     public void logPreUpdate() {
18         logger.info("PreUpdate " + this.getTitle());
19     }
20     
21     @PostUpdate
22     public void logPostUpdate() {
23         logger.info("PostUpdate " + this.getTitle());
24     }
25     
26     @PreRemove
27     public void logPreRemove() {
28         logger.info("PreRemove " + this.getTitle());
29     }
30     
31     @PostRemove
32     public void logPostRemove() {
33         logger.info("PostRemove " + this.getTitle());
34     }
褰撶劧涔熷彲浠ョ敤Entity Listeners 錛屽錛?br /> 鍦ㄥ疄浣撶被涓婂姞涓婅繖涓敞瑙o細@EntityListeners(value = { MagazineLog.class })
鐒跺悗鍐橫agazineLog.java:
 1 public class MagazineLog {
 2     /**
 3      * Logger for this class
 4      */
 5     private static final Logger logger = LoggerFactory.getLogger(MagazineLog.class);
 6 
 7     @PrePersist
 8     public void logPrePersist(Object pc) {
 9         logger.info("PrePersist " + ((Magazine)pc).getTitle());
10     }
11     
12     @PostPersist
13     public void logPostPersist(Object pc) {
14         logger.info("PostPersist " + ((Magazine)pc).getTitle());
15     }
16     
17     @PostLoad
18     public void logPostLoad(Object pc) {
19         logger.info("PostLoad " + ((Magazine)pc).getTitle());
20     }
21     
22     @PreUpdate
23     public void logPreUpdate(Object pc) {
24         logger.info("PreUpdate " + ((Magazine)pc).getTitle());
25     }
26     
27     @PostUpdate
28     public void logPostUpdate(Object pc) {
29         logger.info("PostUpdate " + ((Magazine)pc).getTitle());
30     }
31     
32     @PreRemove
33     public void logPreRemove(Object pc) {
34         logger.info("PreRemove " + ((Magazine)pc).getTitle());
35     }
36     
37     @PostRemove
38     public void logPostRemove(Object pc) {
39         logger.info("PostRemove " + ((Magazine)pc).getTitle());
40     }
41 }
灝辮繖浜涳紝榪欎釜姣旇緝綆鍗?br />


澶╃嫭 2010-04-22 20:01 鍙戣〃璇勮
]]>
JPA鍏ラ棬-2http://www.tkk7.com/kick191/articles/JPA2.html澶╃嫭澶╃嫭Tue, 06 Apr 2010 14:24:00 GMThttp://www.tkk7.com/kick191/articles/JPA2.htmlhttp://www.tkk7.com/kick191/comments/317597.htmlhttp://www.tkk7.com/kick191/articles/JPA2.html#Feedback0http://www.tkk7.com/kick191/comments/commentRss/317597.htmlhttp://www.tkk7.com/kick191/services/trackbacks/317597.html
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema" /> <!-- 榪欎釜鏄嚜鍔ㄥ垱寤鴻〃鐨?nbsp;-->
<property name="openjpa.Log" value="DefaultLevel=WARN,SQL=TRACE" />  <!-- 榪欐槸鎵撳嵃SQL璇彞 -->
榪欎袱涓槸姣旇緝甯哥敤鐨勫睘鎬?br /> 浠婂ぉ璇寸殑鏄竴瀵瑰鐨勫叧鑱旓紝榪欓噷鏈変笁涓被錛岄潪鍒槸User錛孭ost錛孋omment浠栦滑涔嬮棿鐨勫叧緋繪槸錛孶ser涓湁澶氫釜Post鍜? Comment錛孭ost鏈夊涓狢omment錛岃孋omment鏈夊彧鏈変竴涓猆ser鍜孭ost錛岃繖閲屾垜灝變笉鍒楀嚭鏉ヨ〃緇撴瀯浜嗭紝鍥犱負鍙互鐢↗PA鐨勮嚜鍔ㄧ敓鎴? 琛?br /> 涓嬮潰鏄疷ser鐨勫叧閿唬鐮?
 1 @Entity
 2 public class User {
 3   @Id
 4   @GeneratedValue(strategy = GenerationType.SEQUENCE)
 5   private int id;
 6   private String name;
 7   private String password;
 8   private String gender;
 9   @OneToMany(cascade = CascadeType.ALL)
10   private List<Comment> comments;
11   @OneToMany(cascade = CascadeType.ALL)
12   private List<Post> posts;
13   // ………………
14 }
娌℃湁浠涔堝彲璇寸殑錛屽彧璇翠袱鐐?br /> 1.@GeneratedValue(strategy = GenerationType.SEQUENCE)榪欐槸璇翠負id鑷姩鐢熸垚涓涓簭鍒楋紝榪欎釜閫夐」婀栬嚜鍔ㄥ湪鏁版嵁搴撲腑鍒涘緩涓涓敤鏉ョ敓鎴愬簭鍒楃殑琛紝涓鍏辨湁鍥涚
  • GeneratorType.AUTO: The default. Assign the field a generated value, leaving the details to the JPA vendor.

  • GenerationType.IDENTITY: The database will assign an identity value on insert.

  • GenerationType.SEQUENCE: Use a datastore sequence to generate a field value.

  • GenerationType.TABLE: Use a sequence table to generate a field value

榪欎簨Apache瀹樻柟鏂囨。璇寸殑錛?鑻辨枃涓嶅ソ鎴戝氨涓嶇炕璇戜簡錛屽簲璇ヨ鐨勫緢鏄庣櫧錛屼篃寰堝鏄撴噦
GenerationValue榪樻湁鍙﹀涓涓睘鎬enerator榪欎釜鎴戝彧鍦ˋUTO涓嬪疄楠屼簡錛屼粬鏈変笅闈㈠嚑縐嶏細
  • uuid-string: OpenJPA will generate a 128-bit type 1 UUID unique within the network, represented as a 16-character string. For more information on UUIDs, see the IETF UUID draft specification at: http://www1.ics.uci.edu/~ejw/authoring/uuid-guid/

  • uuid-hex: Same as uuid-string, but represents the type 1 UUID as a 32-character hexadecimal string.

  • uuid-type4-string: OpenJPA will generate a 128-bit type 4 pseudo-random UUID, represented as a 16-character string. For more information on UUIDs, see the IETF UUID draft specification at: http://www1.ics.uci.edu/~ejw/authoring/uuid-guid/

  • uuid-type4-hex: Same as uuid-type4-string , but represents the type 4 UUID as a 32-character hexadecimal string.


2.@OneToMany(cascade = CascadeType.ALL),綰ц仈錛屾垜榪欓噷鏄墍鏈夛紝綰ц仈涔熸槸鏈?涓紙榪樻槸鑰冪殑瀹樻柟鏂囨。錛夛細
  • CascadeType.PERSIST: When persisting an entity, also persist the entities held in this field. We suggest liberal application of this cascade rule, because if the EntityManager finds a field that references a new entity during flush, and the field does not use CascadeType.PERSIST, it is an error.

  • CascadeType.REMOVE: When deleting an entity, also delete the entities held in this field.

  • CascadeType.REFRESH: When refreshing an entity, also refresh the entities held in this field.

  • CascadeType.MERGE: When merging entity state, also merge the entities held in this field.

鍏蜂綋鐨勮繕鏄鐪嬪畼鏂規枃妗o紝璇寸殑寰堣緇?br /> 榪欓噷涔熷彲浠ヤ嬌鐢ㄥ叾涓殑鍑犵錛?縐嶆垨鐫澶氶噸錛屼緥濡傦細@ManyToOne(cascade= {CascadeType.PERSIST,CascadeType.REMOVE,CascadeType.REFRESH,CascadeType.MERGE})
涓嬫潵鏄疨ost鍜孋omment鐨勫叧閿唬鐮侊細
 1 @Entity
 2 public class Post {
 3   @Id
 4   @GeneratedValue(strategy = GenerationType.SEQUENCE)
 5   private int id;
 6   private Date createDate;
 7   private String title;
 8   private String content;
 9   @ManyToOne(cascade = CascadeType.ALL)
10   private User author;
11   @OneToMany(cascade = CascadeType.ALL)
12   private List<Comment> comments;
13   // ………………
14 }
15 
16 @Entity
17 public class Comment {
18   @Id
19   @GeneratedValue(strategy = GenerationType.SEQUENCE)
20   private int id;
21   private Date createDate;
22   private String title;
23   private String content;
24   @ManyToOne(cascade = CascadeType.ALL)
25   private User author;
26   @ManyToOne(cascade = CascadeType.ALL)
27   private Post post;
28   // ………………
29 }
涓嬫潵鐨勫簲璇ユ病鏈変粈涔堝彲璇寸殑錛屼笅闈㈡槸鎴戠殑嫻嬭瘯浠g爜錛?br />
 1  EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
 2 EntityManager em = factory.createEntityManager();
 3 em.getTransaction().begin();
 4 User user = new User();
 5 user.setName("Innate");
 6 user.setPassword("Innate");
 7 user.setGender("鐢?/span>");
 8 List<Post> posts = new ArrayList<Post>();
 9 
10 for (int i = 0; i < 5; i++) {
11   Post post = new Post();
12   post.setAuthor(user);
13   post.setContent("test");
14   post.setCreateDate(new Date());
15   post.setTitle("Innate");
16   posts.add(post);
17   List<Comment> comments = new ArrayList<Comment>();
18   for (int j = 0; j < 5; j++) {
19     Comment comment = new Comment();
20     comment.setAuthor(user);
21     comment.setContent("testtest");
22     comment.setCreateDate(new Date());
23     comment.setPost(post);
24     comment.setTitle("InnateInnate");
25     comments.add(comment);
26   }
27   post.setComments(comments);
28   user.setComments(comments);
29 }
30 user.setPosts(posts);
31 em.persist(user);
32 em.getTransaction().commit();
婧愪唬鐮侊紙鍖呭惈1錛?鐨勶級:JTATest.7z


澶╃嫭 2010-04-06 22:24 鍙戣〃璇勮
]]>
JPA鍏ラ棬-1http://www.tkk7.com/kick191/articles/JPA1.html澶╃嫭澶╃嫭Sat, 03 Apr 2010 08:01:00 GMThttp://www.tkk7.com/kick191/articles/JPA1.htmlhttp://www.tkk7.com/kick191/comments/317394.htmlhttp://www.tkk7.com/kick191/articles/JPA1.html#Feedback0http://www.tkk7.com/kick191/comments/commentRss/317394.htmlhttp://www.tkk7.com/kick191/services/trackbacks/317394.html persistence.xml鏂囦歡鐨勯厤緗?br />
 1 <persistence-unit name="test">
 2   <class>cn.is.test.Test</class>
 3 
 4   <properties>
 5     <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/test" />
 6     <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
 7     <property name="openjpa.ConnectionUserName" value="root" />
 8     <property name="openjpa.ConnectionPassword" value="root" />
 9   </properties>
10 </persistence-unit>

榪欓噷鏈変釜闂錛屾垜涓鑸敤mysql椹卞姩鐨刼rg.gjt.mm.mysql.Driver榪欎釜椹卞姩綾伙紝浣嗘槸鍦ㄨ繖閲岋紝榪愯鐨勬椂鍊欐姤椹卞姩綾繪垨鐫榪炴帴URL閿欒


涓嬮潰鐨勬槸瀹炰綋綾?br />
 1 package cn.is.test;
 2 
 3 import java.io.Serializable;
 4 import javax.persistence.Entity;
 5 import javax.persistence.Id;
 6 
 7 @Entity
 8 public class Test implements Serializable {
 9   @Id
10   private String id;
11 
12   private String userName;
13 
14   private String password;
15 
16   private String sex;
17 
18   private static final long serialVersionUID = 1L;
19 
20   public Test() {
21     super();
22   }
23 
24   public String getId() {
25     return this.id;
26   }
27 
28   public void setId(String id) {
29     this.id = id;
30   }
31 
32   public String getUserName() {
33     return this.userName;
34   }
35 
36   public void setUserName(String username) {
37     this.userName = username;
38   }
39 
40   public String getPassword() {
41     return this.password;
42   }
43 
44   public void setPassword(String password) {
45     this.password = password;
46   }
47 
48   public String getSex() {
49     return this.sex;
50   }
51 
52   public void setSex(String sex) {
53     this.sex = sex;
54   }
55 
56 
57 
58 }
59 

涓嬫潵鐨勬槸嫻嬭瘯浠g爜錛?br />
 1 EntityManagerFactory factory = Persistence.createEntityManagerFactory("test");
 2 EntityManager em = factory.createEntityManager();
 3 Test test = new Test();
 4 test.setId(UUID.randomUUID().toString());
 5 test.setSex("鐢?/span>");
 6 test.setUserName("Innate");
 7 test.setPassword("solitary");
 8 
 9 em.getTransaction().begin();
10 
11 em.persist(test);
12 
13 em.getTransaction().commit();
14 
15 em.close();
16 
17 em = factory.createEntityManager();
18 
19 Query query = em.createQuery("select t from Test t");
20 List<Test> testList = query.getResultList();
21 
22 for (Test _test : testList) {
23   System.out.println(_test.getUserName());
24 }
25 
26 em.close();
27 factory.close();



澶╃嫭 2010-04-03 16:01 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 亚洲精品一卡2卡3卡三卡四卡| 久久国产成人亚洲精品影院| 亚洲福利视频网址| 久久一本岛在免费线观看2020| 国产亚洲情侣一区二区无码AV| 性生大片视频免费观看一级| 免费一级肉体全黄毛片| 高潮毛片无遮挡高清免费视频 | 亚洲春色另类小说| 最近高清中文字幕免费| 亚洲福利视频一区二区三区| 日韩欧毛片免费视频| 日本亚洲色大成网站www久久| 免费观看的av毛片的网站| 国产精品国产亚洲区艳妇糸列短篇| 日本高清免费aaaaa大片视频| 欧美亚洲国产SUV| 亚洲精品无码专区久久同性男| 成人免费无码H在线观看不卡| 久久亚洲AV午夜福利精品一区| 最近免费2019中文字幕大全| 亚洲人成网站18禁止久久影院| 四色在线精品免费观看| 国产免费区在线观看十分钟| 亚洲AV无码码潮喷在线观看| 免费99精品国产自在现线| 最新亚洲人成无码网www电影| 亚洲熟妇少妇任你躁在线观看无码 | 久久久亚洲精品无码| 波多野结衣在线免费视频| 亚洲免费综合色在线视频| 国产亚洲精品AA片在线观看不加载 | 亚洲一区二区中文| 手机在线毛片免费播放| 黄色毛片视频免费| 亚洲福利在线观看| 国产精品免费_区二区三区观看| 人妻在线日韩免费视频| 亚洲丝袜中文字幕| 国产亚洲情侣一区二区无| 毛片基地免费观看|