久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Annotation(二)——Hibernate中注解的開發(fā)

 宇宙之窗 2014-04-02

         在利用注解開發(fā)數(shù)據(jù)庫(kù)持久層以前,,需要學(xué)習(xí)一個(gè)規(guī)范JPA(Java Persistence API),,這也是SUN公司提出的數(shù)據(jù)庫(kù)的持久化規(guī)范。就類似于JDBC,,Servlet,JSP等規(guī)范一樣,。而Hibernate框架就實(shí)現(xiàn)了此規(guī)范,我們可以通過注解和配置文件來實(shí)現(xiàn)此規(guī)范,。前邊的學(xué)習(xí)都是建立在配置文件的基礎(chǔ)上,,而注解開發(fā)現(xiàn)在也處于一種趨勢(shì),畢竟它大大提高了開發(fā)速度,。

 

        看一下注解在Hibernate框架中的開發(fā)知識(shí),。

 

        一,首先需要導(dǎo)入支持注解開發(fā)的jar包:

hibernate-annotations.jar

hibernate-commons-annotations.jar (Hibernate中支持注解開發(fā)的jar包)

 

ejb3-persistence.jar(API規(guī)范的jar包)

 

slf4j/slf4j-api-1.5.0.jar

slf4j-log4j12-1.5.0.jar

log4j-1.2.15.jar  (支持日志輸出的jar包,,注意版本的匹配)

 

        二,,在Hibernate框架進(jìn)行注解開發(fā)時(shí),主要是代替實(shí)體和數(shù)據(jù)表的映射文件,,而核心配置文件中的,,數(shù)據(jù)庫(kù)的連接等等,還是需要xml配置文件,,進(jìn)行配置的,。先看一下Hibernate中常用的注解:

 

           1,@Entity : 表示當(dāng)前的類為實(shí)體類,,聲明在類的前面,。可以將當(dāng)前類和數(shù)據(jù)庫(kù)的表和字段進(jìn)行關(guān)聯(lián)映射,。

 

           2,,@Table:表示映射的表,聲明在類的前面

 

           3,,@Id:表示主鍵的映射,,聲明在主鍵的get方法前邊,,默認(rèn)情況下主鍵利用assigned(用戶提供)生成策略。如果想要設(shè)置API規(guī)范提供了四種主鍵生成策略:

@GeneratedValue(strategy=GenerationType.AUTO)      相當(dāng)于Hibernate框架的native主鍵生成策略

@GeneratedValue(strategy=GenerationType.IDENTITY)  相當(dāng)于Hibernate框架的identity主鍵生成策略,,適用于MySQL,SQL Server

@GeneratedValue(strategy=GenerationType.SEQUENCE)  相當(dāng)于Hibernate框架的sequence主鍵生成策略,,適用于Oracle,DB2

@GeneratedValue(strategy=GenerationType.TABLE)     使用一張單表管理主鍵值。

         默認(rèn)情況下API規(guī)范是不支持Hibernate框架中的uuid的主鍵生成策略,,假如我們想要使用,,需要我們進(jìn)行增加主鍵生成器,如下:

@GenericGenerator(name="hibernate-uuid",strategy="uuid")

@GeneratedValue(generator="hibernate-uuid")

 

           4,,@Column : 表示映射屬性,,和表的字段進(jìn)行關(guān)聯(lián)

 

           5,@ManyToOne : 表示映射關(guān)系中的多對(duì)一

 

           6,,@JoinColumn : 表示外鍵映射屬性,,和表的外鍵字段進(jìn)行關(guān)聯(lián)

 

           7,@OneToMany : 表示映射關(guān)系中的一對(duì)多,,這里需要注意,,一對(duì)多時(shí),外鍵的維護(hù)需要翻轉(zhuǎn)交給多的一方進(jìn)行維護(hù),,需要配置反轉(zhuǎn)屬性mappedBy,屬性取值為多的一方的映射屬性名稱,。相當(dāng)于xml配置文件中的Inverse="true"。

 

           8,,@OrderBy : 表示排序字段

 

           9,@Transient : 表示聲明瞬時(shí)屬性,,不和數(shù)據(jù)庫(kù)的字段發(fā)生關(guān)聯(lián),,也就是沒有表中列與之映射。

 

         等等吧,,其實(shí)我感覺這些屬性和xml配置文件屬性都是一一對(duì)應(yīng)的,,及時(shí)不一樣,也會(huì)有與之類似的屬性進(jìn)行實(shí)現(xiàn)其功能,,所以我們可以對(duì)比著使用,。當(dāng)然這里只是一些常用的,當(dāng)我們需要時(shí)還需要我們查看文檔進(jìn)行編寫,。

        

          三,,看一個(gè)簡(jiǎn)單的利用主鍵開發(fā)的實(shí)體類吧,這里就不需要我們?cè)倬帉懪渲梦募耍?/span>

 

  1. <span style="font-size: 18px;">@Entity  
  2. @Table(name="t_org")  
  3. public class Org {  
  4.   
  5.     private String id;  
  6.     private String name;  
  7.     private String code;  
  8.     private String manager;  
  9.     private String remark;  
  10.     private String createtime;  
  11.     private String updatetime;  
  12.       
  13.     private OrgType orgType;  
  14.       
  15.     private String pid;  
  16.       
  17.     @Transient  
  18.     public String getPid() {  
  19.         return pid;  
  20.     }  
  21.   
  22.     public void setPid(String pid) {  
  23.         this.pid = pid;  
  24.     }  
  25.   
  26.     private Org parentOrg;  
  27.       
  28.     private Set<Org> childOrgSet ;  
  29.   
  30.     @Id  
  31.     @GenericGenerator(name="hibernate-uuid", strategy="uuid")  
  32.     @GeneratedValue(generator="hibernate-uuid")  
  33.     public String getId() {  
  34.         return id;  
  35.     }  
  36.   
  37.     public void setId(String id) {  
  38.         this.id = id;  
  39.     }  
  40.   
  41.     public String getName() {  
  42.         return name;  
  43.     }  
  44.   
  45.     public void setName(String name) {  
  46.         this.name = name;  
  47.     }  
  48.   
  49.     public String getCode() {  
  50.         return code;  
  51.     }  
  52.   
  53.     public void setCode(String code) {  
  54.         this.code = code;  
  55.     }  
  56.   
  57.     public String getManager() {  
  58.         return manager;  
  59.     }  
  60.   
  61.     public void setManager(String manager) {  
  62.         this.manager = manager;  
  63.     }  
  64.   
  65.     public String getRemark() {  
  66.         return remark;  
  67.     }  
  68.   
  69.     public void setRemark(String remark) {  
  70.         this.remark = remark;  
  71.     }  
  72.   
  73.     @Column(updatable=false)  
  74.     public String getCreatetime() {  
  75.         return createtime;  
  76.     }  
  77.   
  78.     public void setCreatetime(String createtime) {  
  79.         this.createtime = createtime;  
  80.     }  
  81.   
  82.     @Column(insertable=false)  
  83.     public String getUpdatetime() {  
  84.         return updatetime;  
  85.     }  
  86.   
  87.     public void setUpdatetime(String updatetime) {  
  88.         this.updatetime = updatetime;  
  89.     }  
  90.   
  91.     @ManyToOne  
  92.     @JoinColumn(name="orgTypeId")  
  93.     public OrgType getOrgType() {  
  94.         return orgType;  
  95.     }  
  96.   
  97.     public void setOrgType(OrgType orgType) {  
  98.         this.orgType = orgType;  
  99.     }  
  100.   
  101.     @ManyToOne  
  102.     @JoinColumn(name="pid", updatable=false)  
  103.     public Org getParentOrg() {  
  104.         return parentOrg;  
  105.     }  
  106.   
  107.     public void setParentOrg(Org parentOrg) {  
  108.         this.parentOrg = parentOrg;  
  109.     }  
  110.   
  111.     @OneToMany(mappedBy="parentOrg")  
  112.     @JoinColumn(name="pid")  
  113.     @OrderBy("code")  
  114.     public Set<Org> getChildOrgSet() {  
  115.         return childOrgSet;  
  116.     }  
  117.   
  118.     public void setChildOrgSet(Set<Org> childOrgSet) {  
  119.         this.childOrgSet = childOrgSet;  
  120.     }  
  121. }  
  122. </span>  


 

         四,,當(dāng)然用了注解的開發(fā)方式,,我們的核心配置文件就需要我修改了,這里就需要Hibernate的AnnotationSessionFactoryBean工廠類了,,

  1. <span style="font-size: 18px;"> <!-- Hibernate核心對(duì)象 -->  
  2.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  3.           <!--省略……-->  
  4.          <!--指定進(jìn)行了Hibernate注解開發(fā)的包,,方便框架進(jìn)行掃描設(shè)置-->  
  5.          <property name="packagesToScan">  
  6.             <list>  
  7.                 <value>com/ljh/ppp/domain</value>  
  8.             </list>  
  9.         </property>  
  10. </span>  

 


       這樣Hibernate框架的注解開發(fā)基本上就算完畢了,,總體感覺是比較高效的。我們沒寫一個(gè)類一個(gè)方法,,順便將注解編寫了,,這樣我們就不用專門用來編寫映射文件了。掌握好注解的開發(fā),,在很多時(shí)候可以大大提高我們的效率,。當(dāng)然還有其它框架的注解運(yùn)用,后邊總結(jié),。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多