hibernate annotation和xml两个方式由orm连接数据库

来源:互联网 发布:linux系统查看系统时间 编辑:程序博客网 时间:2024/05/16 09:47
Hibernate 注解和配置文件由ORM框架连接库



xml优点
 不需要改变和重新编译代码,就可以灵活配置
xml缺点:
◆ 描述符多,不容易记忆,掌握。要深入了解还得看DTD文件
◆ 无法做自动校验,需要人工查找
◆ 读取和解析xml配置要消耗一定时间,导致应用启动慢,不便于测试和维护
◆ 当系统很大时,大量的xml文件难以管理
◆ 运行中保存xml配置需要消耗额外的内存
◆ 在O/R Mapping的时候需要在java文件和xml配置文件之间交替,增大了工作量 
◆ 标签语义不清,需要大量试验才能掌握。
◆ 细节太多。有时没规律可循,需要大量试验才能掌握。

annotation优点
◆ 描述符减少。以前在xml配置中往往需要描述java属性的类型,关系等等。而元数
据本身就是java语言,从而省略了大量的描述符
◆ 编译期校验。错误的批注在编译期间就会报错。
◆ 元数据批注在java代码中,避免了额外的文件维护工作
◆ 元数据被编译成java bytecode,消耗的内存少,读取也很快,利于测试和维护
Annotation缺点
没法灵活部署
语义有的不是很清楚

Annotation放在field上,还是放在还是放在method上?
推荐放在method上,这样更灵活
也有可能没有成员变量,但是有getter/setter,
     比如一个订单求总价
Getter/setter和成员变量的名字最好一致;
Annotation要么全加在field上,要么全加在method上






1.通过配置 bean.hbm.xml
a.hibernate.cfg.xml文件里面

Java代码  收藏代码
  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. <hibernate-configuration>  
  6.   <session-factory>  
  7.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  8.         <property name="connection.url">jdbc:mysql://localhost:3306/beichuang</property>  
  9.         <property name="connection.username">root</property>  
  10.         <property name="connection.password">123456</property>  
  11.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.         <property name="connection.autocommit">true</property>  
  13.         <property name="show_sql">true</property>  
  14.           
  15.     <mapping resource="com/chuanxi/training/bean/Team.hbm.xml"></mapping>  
  16.     <mapping resource="com/chuanxi/training/bean/Student.hbm.xml"></mapping>  
  17.     <mapping resource="com/chuanxi/training/bean/Admin.hbm.xml"></mapping>  
  18.     <mapping resource="com/chuanxi/training/bean/Log.hbm.xml"></mapping>  
  19.   </session-factory>  
  20. </hibernate-configuration>  

b.team.hbm.xml
Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping package="com.chuanxi.training.bean">  
  6.     <class name="Team" table="team">  
  7.          <id name="id" column="team_id">  
  8.              <generator class="identity"/>  
  9.          </id>  
  10.          <property name="name" column="name"></property>  
  11.          <property name="leader" column="leader"></property>  
  12.          <property name="slogan" column="slogan"></property>  
  13.          <set name="members" inverse="true" lazy="false">  
  14.              <key>  
  15.                 <column name="team_id"/>  
  16.              </key>  
  17.              <one-to-many class="com.chuanxi.training.bean.Student"/>   
  18.          </set>  
  19.     </class>  
  20. </hibernate-mapping>  



2.Hibernate的注解

a.hibernate.cfg.xml
Java代码  收藏代码
  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. <hibernate-configuration>  
  6.   <session-factory>  
  7.         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>  
  8.         <property name="connection.url">jdbc:mysql://localhost:3306/beichuang</property>  
  9.         <property name="connection.username">root</property>  
  10.         <property name="connection.password">123456</property>  
  11.         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>  
  12.         <property name="connection.autocommit">true</property>  
  13.         <property name="show_sql">true</property>  
  14.           
  15.     <mapping class="com.org.momo.bean.Team"></mapping>  
  16.     <mapping class="com.org.momo.bean.Student"></mapping>  
  17.     <mapping class="com.org.momo.bean.Log"></mapping>  
  18.     <mapping class="com.org.momo.bean.Admin"></mapping>  
  19.   </session-factory>  
  20. </hibernate-configuration>  


b.team.java
Java代码  收藏代码
  1. package com.org.momo.bean;  
  2.   
  3. import java.util.Set;  
  4.   
  5. import javax.persistence.Column;  
  6. import javax.persistence.Entity;  
  7. import javax.persistence.FetchType;  
  8. import javax.persistence.GeneratedValue;  
  9. import javax.persistence.GenerationType;  
  10. import javax.persistence.Id;  
  11. import javax.persistence.OneToMany;  
  12. import javax.persistence.Table;  
  13.   
  14.   
  15.   
  16. @Entity  
  17. @Table(name="team")  
  18. public class Team {  
  19.   
  20.     @Id  
  21.     @Column(name="team_id")  
  22.     @GeneratedValue(strategy=GenerationType.AUTO)  
  23.     private Integer id;  
  24.     @Column(name="name")  
  25.     private String name;  
  26.     @Column(name="leader")  
  27.     private String leader;  
  28.     @Column(name="slogan")  
  29.     private String slogan;  
  30.       
  31.     @OneToMany(mappedBy="team",fetch=FetchType.EAGER)  
  32.     private Set<Student> members;  
  33.       
  34.     public Team() {  
  35.           
  36.     }  
  37.       
  38.     public Team(String name, String leader, String slogan) {  
  39.         this.name = name;  
  40.         this.leader = leader;  
  41.         this.slogan = slogan;  
  42.     }  
  43.       
  44.     public Integer getId() {  
  45.         return id;  
  46.     }  
  47.     public void setId(Integer id) {  
  48.         this.id = id;  
  49.     }  
  50.     public String getName() {  
  51.         return name;  
  52.     }  
  53.     public void setName(String name) {  
  54.         this.name = name;  
  55.     }  
  56.     public String getLeader() {  
  57.         return leader;  
  58.     }  
  59.     public void setLeader(String leader) {  
  60.         this.leader = leader;  
  61.     }  
  62.     public String getSlogan() {  
  63.         return slogan;  
  64.     }  
  65.     public void setSlogan(String slogan) {  
  66.         this.slogan = slogan;  
  67.     }  
  68.     public Set<Student> getMembers() {  
  69.         return members;  
  70.     }  
  71.     public void setMembers(Set<Student> members) {  
  72.         this.members = members;  
  73.     }  

0 0