金沙国际app-金沙国际手机app下载

金沙国际app包括教育和科研机构建设、学科共建等,欢迎来到金沙国际手机app下载这里有多种线上娱乐游戏,金沙国际app获颁“创意中国榜”中国文化创意产业领军企业,是一家专业从事网络休闲平台游戏开发、运营的服务性企业。

当前位置:金沙国际app > 网络世界 > Hibernate ORM框架学习日记基础篇-1

Hibernate ORM框架学习日记基础篇-1

文章作者:网络世界 上传时间:2019-10-11

Hibernate之集合映射,hibernate映射

一、简介

      Hibernate是轻量级Java EE应用的持久层解决方案,不仅管理Java类库到数据库表的映射,还提供数据查询和获取数据的

方法,它完成对象模型和基于SQL的关系模型的映射关系,使得开发者可以完全采用面向对象的方法来开发应用程序。

      ORM全称为Object/Relation Mapping,即对象/关系数据库映射,完成面向对象到关系数据库的映射,将关系数据库包装成

面向对象的模型

一 List映射

如果持久化类中具有List对象,可以通过映射文件中的类<list>元素或注解来映射List.

例如,一个问题有多个答案:

 

图片 1

1)创建持久化类

package list;

import java.util.List;

public class Question {

 private int id;

 private String qname;

 private List<String> answers;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getQname() {
  return qname;
 }

 public void setQname(String qname) {
  this.qname = qname;
 }

 public List<String> getAnswers() {
  return answers;
 }

 public void setAnswers(List<String> answers) {
  this.answers = answers;
 }



}

2)创建映射文件

<?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>  
  <class name="list.Question" table="quesion">  
    <cache usage="read-write"/>
    <id name="id">  
     <generator class="increment"></generator>  
    </id>  
    <property name="qname"></property> 
    <list name="answers" table="answers">
     <key column="qid"></key>
     <index column="type"></index>
     <element column="answer" type="string"></element>
    </list>

  </class>  

 </hibernate-mapping>

3)在全局配置文件中增加

  <!-- List of XML mapping files -->
     <mapping resource="list/Question.hbm.xml"/>

4)测试

package list;

import java.util.ArrayList;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Test {

 public static void main(String[] args) {

  Configuration cfg = new Configuration();
  cfg.configure("hibernate.cfg.xml");
  SessionFactory factory = cfg.buildSessionFactory();
  Session session = factory.openSession();
  session.beginTransaction();

  ArrayList<String> list1 = new ArrayList<String>();
  list1.add("answer1");
  list1.add("answer2");

  Question question1  = new Question();
  question1.setQname("question1");
  question1.setAnswers(list1);

  session.save(question1);

  session.getTransaction().commit();
  session.close();


  //factory.close();


 }

}

图片 2

图片 3

图片 4

二 List一对多映射

一个问题有多个答案,每个答案有自己的信息,需要使用一对多关联来映射。

1)创建持久化类

package list;

import java.util.List;

public class Question {

 private int id;

 private String qname;

 private List<Answer> answers;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getQname() {
  return qname;
 }

 public void setQname(String qname) {
  this.qname = qname;
 }

 public List<Answer> getAnswers() {
  return answers;
 }

 public void setAnswers(List<Answer> answers) {
  this.answers = answers;
 }





}

package list;

public class Answer {

 private int id;

 private String answername;

 private String postedBy;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getAnswername() {
  return answername;
 }

 public void setAnswername(String answername) {
  this.answername = answername;
 }

 public String getPostedBy() {
  return postedBy;
 }

 public void setPostedBy(String postedBy) {
  this.postedBy = postedBy;
 }



}

2)配置文件

<?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>  
  <class name="list.Question" table="quesion">  
    <cache usage="read-write"/>
    <id name="id">  
     <generator class="increment"></generator>  
    </id>  
    <property name="qname"></property> 
    <list name="answers" cascade="all">
     <key column="qid"></key>
     <index column="type"></index>
     <one-to-many class="list.Answer"/>
    </list>
   </class>

    <class name="list.Answer" table="answers">  
     <cache usage="read-write"/>
     <id name="id">  
      <generator class="increment"></generator>  
     </id>  
     <property name="answername"></property> 
     <property name="postedBy"></property>
    </class>  

 </hibernate-mapping>

3)在hibernate.cfg.xml中添加配置

   <!-- List of XML mapping files -->
     <mapping resource="list/Question.hbm.xml"/>

4)测试

package list;

import java.util.ArrayList;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Test {

 public static void main(String[] args) {

  Configuration cfg = new Configuration();
  cfg.configure("hibernate.cfg.xml");
  SessionFactory factory = cfg.buildSessionFactory();
  Session session = factory.openSession();
  session.beginTransaction();

  Answer ans1 = new Answer();
  ans1.setAnswername("ans1");
  ans1.setPostedBy("post1");

  Answer ans2 = new Answer();
  ans2.setAnswername("ans2");
  ans2.setPostedBy("post2");

  Answer ans3 = new Answer();
  ans3.setAnswername("ans3");
  ans3.setPostedBy("post3");

  ArrayList<Answer> list1 = new ArrayList<Answer>();
  list1.add(ans1);
  list1.add(ans2);
  list1.add(ans3);


  Question question1  = new Question();
  question1.setQname("question1");
  question1.setAnswers(list1);


  session.save(question1);

  session.getTransaction().commit();
  session.close();


  //factory.close();


 }

}

  

 

http://www.bkjia.com/Javabc/1216727.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1216727.htmlTechArticleHibernate之集合映射,hibernate映射 一 List映射 如果持久化类中具有List对象,可以通过映射文件中的类list元素或注解来映射List. 例如,一个问...

二、hibernate 及相关下载

      在Eclipse中新建一个项目,然后准备好需要的jar包,数据库使用的是mysql

      a.官网下载hibernate orm jar包,解压之后将lib中的required所有jar包导入项目

      b.由于使用mysql数据库连接,所以要将mysql的数据库连接的jar导入项目,即mysql-connector-java-5.1.42-bin.jar

      c.这里使用c3p0数据源进行数据库的连接管理,所以需要将下载的hibernate jar包中的lib文件夹下的optional文件夹下的

        c3p0文件夹下的所有jar包导入项目

      d.测试类需要用到JUnit,需要在项目中导入JUnit4的jar包

三、开始使用hibernate

本文由金沙国际app发布于网络世界,转载请注明出处:Hibernate ORM框架学习日记基础篇-1

关键词: