Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级

个人博客
项目地址-码云

  1. intellij新建Maven项目
  2. 在src/resource下新建hibernate.cfg.xml文件,一定要在src/resource目录下,否则会报无法定位资源文件的错误。



    
        
        jdbc:mysql://localhost:3306/hibernate-final?useUnicode=true&characterEncoding=UTF-8
        
        com.mysql.jdbc.Driver
        
        root
        
        rootPwd

        
        org.hibernate.dialect.MySQLDialect
        
        true
        
        true

        
        
        update
        

        
        
    

  1. 不要使用intellij的Add Framework Support,可能是intellij的hibernate版本太低了,使用这种方式生成数据库表的时候会报错,"type"在mysql高版本中已经被删除。
  2. 在项目的pom文件中添加hibernate依赖
      
        
            org.hibernate
            hibernate-core
            4.3.11.Final
        
        
        
            junit
            junit
            4.10
        
        
        
            mysql
            mysql-connector-java
            5.1.39
        
  1. 新建持久化类
package Entity;


/**
 * Created by futao on 2017/9/24.
 */
public class Student {
    //JavaBean(持久化类)编写规范
    //1.公有的类
    //2.私有属性
    //3.提供公有的不带参数的默认构造方法
    //4.私有属性的公有getter和setter
    //5.为方便实例化对象,一般生成一个带参的构造方法

    //设置public static final String的意义在于:比如 .add(Restrictions.eq())的时候,可以直接通过实体的类型点出来,而不用手动输入,这样避免了手动输入发生错误的情况
    private int sid;
    public static final String _sid = "sid";
    private String name;
    public static final String _name = "name";
    private String gender;
    public static final String _gender = "gender";
    private Timestamp birthday;
    public static final String _birthday = "birthday";
    private String address;
    public static final String _address = "address";
    private String tel;
    public static final String _tel = "tel";

    public Student(){ }

    public Student(int sid, String name, String gender, String birthday, String address, String tel) {
        this.sid = sid;
        this.name = name;
        this.gender = gender;
        this.birthday = birthday;
        this.address = address;
        this.tel = tel;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }
}

  1. 在src/resource文件夹下创建实体映射文件StudentEntity.hbm.xml,maven项目的配置文件应该都应该放在这个文件夹下,否则都会报错。




    
        
            
            
        
        
            
        
        
            
        
        
            
        
    

  1. 在hibernate主配置文件中添加实体映射文件
  
        
  1. 测试
package Entity

import org.hibernate.cfg.Configuration
import org.junit.Test

@Suppress("DEPRECATION")
/**
 * Created by futao on 2017/9/24.
 */
class t{

    @Test
    fun testInit(){
        //加载配置文件
        val configuration=Configuration().configure()
        //创建会话工厂
        val sessionFactory=configuration.buildSessionFactory()
        //创建会话
        val session=sessionFactory.openSession()
        //开启事务
        val transaction=session.beginTransaction()

        //crud
        session.save(Student(1,"熊小二","男", "2017-9-24","上海市小二房","1887978252"))

        //提交事务
        transaction.commit()
        //关闭会话
        session.close()
        //关闭会话工厂
        sessionFactory.close()
    }

}


基础版完成 ↑↑↑↑↑↑↑



Hibernate执行流程

Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第1张图片
Hibernate执行流程

session简单地理解就是一个操作数据库的对象
hibernate的操作必须包装在事务当中,否则操作不会同步到数据库(或者使用doWord()的方式)

创建session对象的两种方式
  1. val session=sessionFactory.openSession()
  2. val session=sessionFactory.currentSession
    使用第二种方式获得session需要在hibernate主配置文档中进行配置
 
        thread
hbm常用配置
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第2张图片
mapping
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第3张图片
class
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第4张图片
id
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第5张图片
主键生成策略
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第6张图片
基本类型

timestamp时间戳

Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第7张图片
image.png
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第8张图片
长文本
//Entity
  private Blob picture;//照片,长文本
    public static final String _picture = "picture";


//hbm.xml
       
            
        


//Test    存
 val f= File("d:"+File.separator+"banner.png")
        val input=FileInputStream(f)
        val blob=Hibernate.getLobCreator(session).createBlob(input, input.available().toLong())
        session.save(Student(5,"熊","男", Timestamp(DateTime.now().millis) ,"上海市小二房","1887978252",blob))


//    取
 val entity = session.get(Student::class.java, 4) as Student
        //获得Blob对象
        val pic= entity.picture
        //获得照片的输入流
        val inPut=pic.getBinaryStream()
        //创建输出流
        val file = File("d:"+File.separator+"bannerNew.png")
        //获得输出流
        val outPut=FileOutputStream(file)
        //创建缓冲区
        var buff = ByteArray(inPut.available())
        inPut.read(buff)
        outPut.write(buff)
        inPut.close()
        outPut.close()

组件属性

Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第9张图片
组件属性




    
        
            
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
        
            
                
            
            
                
            
            
                
            
        
    

组件属性的所有property会在实体(Student)对应的表中生成相应的字段

table

get和load

Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第10张图片
1
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第11张图片
2
Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级_第12张图片
项目组成介绍

你可能感兴趣的:(Hibernate-Entity.hbm.xml实现-intellij-kotlin入门级)