您的位置:首页 > 其它

Hibernate --Hibernate的入门体验

2013-03-06 17:16 281 查看
1,为什么引入Hibernate?

A,模型不匹配(阻抗不匹配)

Java是面向对象的语言,使用的是对象模型,其主要的概念有:继承、关联、多态等;

现在大多数的数据库都是关系型数据库,其主要的概念有:表,主键,外键等。

B,解决的办法

1,使用JDBC手工转换,

2,使用ORM(ObjectRelationMapping对象关系映射)框架来解决这些问题,主流的ORMHibernate,TopLink,OJB等。

小小demo:

User.java

packagecom.hfxt.domian;

publicclassUser{
privateintid;
privateStringname;
privateStringpass;
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetPass(){
returnpass;
}
publicvoidsetPass(Stringpass){
this.pass=pass;
}
}


User.hbm.xml:

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="com.hfxt.domian">

<classname="User">
<idname="id">
<generatorclass="native"/>
</id>
<propertyname="name"/>
<propertyname="pass"/>
</class>
</hibernate-mapping>


hibernate.cfg.xml:

<!DOCTYPEhibernate-configurationPUBLIC
"-//Hibernate/HibernateConfigurationDTD3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<propertyname="hibernate.connection.url">jdbc:mysql:///testdemo</property>
<propertyname="hibernate.connection.username">root</property>
<propertyname="hibernate.connection.password">root</property>
<propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<mappingresource="com/hfxt/domian/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Test.java
packagecom.hfxt.test;

importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;

importcom.hfxt.domian.User;

publicclassTest{
publicstaticvoidmain(String[]args){
Configurationcfg=newConfiguration();
cfg.configure();
SessionFactorysf=cfg.buildSessionFactory();
Sessions=sf.openSession();
Useruser=newUser();
user.setName("wangyong");
user.setPass("123");
s.save(user);
s.close();
System.out.println("end");

}

}
这里的后台使用的是mysql数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: