`

Hibernate 注解和配置文件由ORM框架连接库

阅读更多
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文件里面

<?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">
<hibernate-configuration>
  <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/beichuang</property>
		<property name="connection.username">root</property>
		<property name="connection.password">123456</property>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.autocommit">true</property>
		<property name="show_sql">true</property>
		
    <mapping resource="com/chuanxi/training/bean/Team.hbm.xml"></mapping>
    <mapping resource="com/chuanxi/training/bean/Student.hbm.xml"></mapping>
    <mapping resource="com/chuanxi/training/bean/Admin.hbm.xml"></mapping>
    <mapping resource="com/chuanxi/training/bean/Log.hbm.xml"></mapping>
  </session-factory>
</hibernate-configuration>

b.team.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">
<hibernate-mapping package="com.chuanxi.training.bean">
    <class name="Team" table="team">
         <id name="id" column="team_id">
             <generator class="identity"/>
         </id>
         <property name="name" column="name"></property>
         <property name="leader" column="leader"></property>
         <property name="slogan" column="slogan"></property>
         <set name="members" inverse="true" lazy="false">
             <key>
                <column name="team_id"/>
             </key>
             <one-to-many class="com.chuanxi.training.bean.Student"/> 
         </set>
    </class>
</hibernate-mapping>



2.Hibernate的注解

a.hibernate.cfg.xml
<?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">
<hibernate-configuration>
  <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/beichuang</property>
		<property name="connection.username">root</property>
		<property name="connection.password">123456</property>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.autocommit">true</property>
		<property name="show_sql">true</property>
		
    <mapping class="com.org.momo.bean.Team"></mapping>
    <mapping class="com.org.momo.bean.Student"></mapping>
    <mapping class="com.org.momo.bean.Log"></mapping>
    <mapping class="com.org.momo.bean.Admin"></mapping>
  </session-factory>
</hibernate-configuration>


b.team.java
package com.org.momo.bean;

import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;



@Entity
@Table(name="team")
public class Team {

	@Id
	@Column(name="team_id")
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer id;
	@Column(name="name")
	private String name;
	@Column(name="leader")
	private String leader;
	@Column(name="slogan")
	private String slogan;
	
	@OneToMany(mappedBy="team",fetch=FetchType.EAGER)
	private Set<Student> members;
	
	public Team() {
		
	}
	
	public Team(String name, String leader, String slogan) {
		this.name = name;
		this.leader = leader;
		this.slogan = slogan;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getLeader() {
		return leader;
	}
	public void setLeader(String leader) {
		this.leader = leader;
	}
	public String getSlogan() {
		return slogan;
	}
	public void setSlogan(String slogan) {
		this.slogan = slogan;
	}
	public Set<Student> getMembers() {
		return members;
	}
	public void setMembers(Set<Student> members) {
		this.members = members;
	}
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics