首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Hibernate1点理解

2012-11-23 
Hibernate一点理解Hibernate中xx.hbm.xml配置文件的作用:????????配置文件只是负责被Hibernate框架读取,作

Hibernate一点理解
Hibernate中xx.hbm.xml配置文件的作用:????????配置文件只是负责被Hibernate框架读取,作为一种ORM类型框架,可想而知,负责Object到DB的一种映射。那么在框架中配置的文件肯定是被框架抓取,并来组织数据到数据库中的插入操作,所以映射配置文件的错误将导致数据不能够正确插入数据库。????????还有一种情况,即使映射的配置文件配置成功,但你的程序没有按照你配置的方式来组织代码,也不会往数据库中插入正确的数据。下面给出代码对上面的解释来进行说明:--------------------------------->User.java/Profile.javapublic class User implements java.io.Serializable {?private Integer id;
?private String username;
?private String password;
?private Profile profile;?setter and getter methods......}public class Profile {
?private String email;
?private String mobile;
?private String phone;
?private String address;
?private String postcode;setter and getter methods......}--------------------------->User.hbm.xml<hibernate-mapping>
?<class name="com.digilover.hibernate.models.User" table="USERS"
??schema="SCOTT" lazy="true">
??<id name="id" type="java.lang.Integer">
???<column name="ID" precision="10" scale="0" />
???<generator type="java.lang.String">
???<column name="USERNAME" length="20" />
??</property>
??<property name="password" type="java.lang.String">
???<column name="PASSWORD" length="20" />
??</property>
??<component name="profile" type="java.lang.String">
????<column name="EMAIL" length="200" />
???</property>
???<property name="mobile" type="java.lang.String">
????<column name="MOBILE" length="11" />
???</property>
???<property name="phone" type="java.lang.String">
????<column name="PHONE" length="20" />
???</property>
???<property name="address" type="java.lang.String">
????<column name="ADDRESS" length="200" />
???</property>
???<property name="postcode" type="java.lang.String">
????<column name="POSTCODE" length="20" />
???</property>
??</component>
?</class>
</hibernate-mapping>-------------------------->Test.java
public class Test {?public static void main(String[] args) {
??User user = new User();
??user.setUsername("朱茵");
??user.setPassword("222222");
??
??Profile profile = new Profile();
??profile.setEmail("zhuyin@sina.cn");
??profile.setPostcode("222222");
??profile.setAddress("北京海定区王府井路2");
??profile.setMobile("12345678909");
??profile.setPhone("7654321");
??
??//user.setProfile(profile);
???save(user);
?}public static void save(User user){
??Session session = HibernateSessionFactoryUtil.getSessionFactory().getCurrentSession();
??session.beginTransaction();
??session.save(user);
??session.getTransaction().commit();
?}
?
}注意上面注释掉的那句话,如果没有了它,那么数据库中不会正确插入完整数据,Profile中的属性值不会被插入数据库中,因为Profile对象profile没有与User对象user关联,框架根据映射的配置文件找不到与User对象关联的Profile对象。这就是我上面所说的映射文件配置正确,但程序代码组织的不到位,导致框架不能将实体类ORM到数据库中。至于第一种情况,可以将上面的红色字体配置去掉,试验下。

热点排行