Java EE 之Hibernate初步接触 one-to-many
来源:互联网 发布:索隆 知乎 编辑:程序博客网 时间:2024/05/16 18:53
Hibernate本质上就是对JDBC的封装
在使用Hibernate的时候,我们需要先书写hibernate.cfg.xml文件,在这个文件中包含了我们所需要连接的数据库的账号密码,以及jdbc驱动名称,以及数据库的url,还有Hibernate相关设置. 这是我写的一个hibernate.cfg.xml文件
<hibernate-configuration> <session-factory> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url"> <![CDATA[ jdbc:mysql://localhost:3306/hibernate? useUnicode=true&characterEncoding=utf8 ]]> </property> <property name="show_sql">true </property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">create</property> <property name="hibernate.current_session_context_class">thread</property> <mapping resource="entity/Students.hbm.xml" /> <mapping resource="entity/Classes.hbm.xml" /> </session-factory></hibernate-configuration>
在配置文件中,前面的4个属性是jdbc相关配置,而show_sql以及format_sql是在Hibernate执行sql语句的时候进行sql格式化输出,hbm2ddl.auto 是在执行sql语句对数据库的操作,当使用create的时候,在sql语句执行之前会重新创建一次表结构,update对表结构进行更新,
hibernate.current_session_context_class属性是当我们获取session的时候可以通过getCurrentSission来获取session
提到了获取session,这里就扩展下获取session的两种方法区别
1 getCurrentSession创建的session会和绑定到当前线程,而openSession不会。
2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭
而mapping-resource是对我们书写的hbm.xml进行加载
下面就是连个bean类,是一个一对多关系的类
第一个教室类
public class Classes implements Serializable { private int cid; private String cname; private String cdesc; private List<Students> students; public Classes() { } public Classes(String cname, String cdesc, List<Students> students) { this.cname = cname; this.cdesc = cdesc; this.students = students; } public int getCid() { return cid; } public void setCid(int cid) { this.cid = cid; } public String getCname() { return cname; } public void setCname(String cname) { this.cname = cname; } public String getCdesc() { return cdesc; } public void setCdesc(String cdesc) { this.cdesc = cdesc; } public List<Students> getStudents() { return students; } public void setStudents(List<Students> students) { this.students = students; }}
学生类
public class Students implements Serializable { private int sid; private String sname; private String gender; public Students() { } public Students(String sname, String gender) { super(); this.sname = sname; this.gender = gender; } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; }}
对应的hbm.xml文件
classes.hbm.xml
<hibernate-mapping> <class name="entity.Classes" table="classes"> <id name="cid" > <generator class="native" /> </id> <property name="cname" type="java.lang.String"></property> <property name="cdesc" type="java.lang.String"></property> <list name="students" table="students"> <key column="cid"></key> <list-index column="sid" /> <one-to-many class="entity.Students"/> </list> </class></hibernate-mapping>
因为在classes类中我们使用的是list对学生的记录,所以在hbm.xml文件中我们用list属性,其中table对应的多的表的名字,key column 指的是在students表中的外键 list index colum对应的是对应的多的表中的主键,one-to-many就是指向多的表的实体类
students.hbm.xml
<hibernate-mapping> <class name="entity.Students" table="students"> <id name="sid" > <generator class="native" /> </id> <property name="sname" type="java.lang.String"></property> <property name="gender" type="java.lang.String"></property> </class></hibernate-mapping>
0 0
- Java EE 之Hibernate初步接触 one-to-many
- Hibernate之one-to-many
- javaee之hibernate之many-to-one
- javaee之hibernate(one-to-many)
- hibernate学习2之many-to-one
- hibernate many-to-one // one-to-many
- hibernate many-to-one
- hibernate one to many
- Hibernate one-to-many
- hibernate:many to one
- hibernate--one-to-many
- Hibernate中的one-to-many
- Hibernate的one-to-many
- Hibernate one-to-many example
- Hibernate ORM One to Many
- hibernate annotation one-to-many
- Hibernate many-to-one cascade
- hibernate的one-to-many
- Android 网络请求方法
- [LeetCode]Next Permutation下一个排列问题
- 基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
- POJ 1201 差分约束系统
- 安卓动态调试七种武器之长生剑 - Smali Instrumentation
- Java EE 之Hibernate初步接触 one-to-many
- JSON.stringify的使用
- Lab 3:自行车码表
- PAT-B 1030. 完美数列
- poj 初级训练计划数据结构总结
- Hadoop之自定义输入数据(一)
- 在CSDN的安卓版本的App中找到了的一个BUG
- 求方程的近似解,不用库函数求一个数的平方根
- [C++]右值引用和转移语义