栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

hibernate

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

hibernate

一、什么是hibernate

ORM框架/持久层框架

全称为object reference mapping

通过管理对象来改变数据库中的数据

通过管理对象来操作数据库

优势:跨数据库的无缝移植

二、hibernate项目建立的步骤 2.1 添加hibernate相关依赖

pom.xml


  4.0.0
  com.sjy
  hibernate
  war
  0.0.1-SNAPSHOT
  hibernate Maven Webapp
  http://maven.apache.org
  
		UTF-8
		1.8
		1.8
		4.12
		4.0.0
		5.3.0.Final
		8.0.19
	
  
		
			junit
			junit
			${junit.version}
			test
		

		
			javax.servlet
			javax.servlet-api
			${servlet.version}
			provided
		

		
			org.hibernate
			hibernate-core
			${hibernate.version}
		

		
			mysql
			mysql-connector-java
			${mysql.driver.version}
		
	
  
    hibernate
    
    
				org.apache.maven.plugins
				maven-compiler-plugin
				3.7.0
				
					1.8
					1.8
					UTF-8
				
			
    
  

2.2、在resource目录下添加hibernate.cfg.xml(核心配置文件) 

         2.2.1、添加dtd支持

         2.2.2、添加hibernate的配置

               2.2.2.1、数据库相关(connection.username|connection.password|connection.url|connection.driver_class|dialect)

               2.2.2.2 调试相关(show_sql|format_sql)





		




		root
		123456
		jdbc:mysql://127.0.0.1:3306/www?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&useSSL=true
		com.mysql.cj.jdbc.Driver
		org.hibernate.dialect.MySQLDialect
		

		
		thread

		
		true
		true
		
		

		



		


		


		


	

2.3 在开发阶段再创建实体类和实体映射文件(*.hbm.xml)



    
    
     
		
			
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
	
    

 小结:hibernate.cfg.xml(1)/*.hbm.xml(N)
        实体映射文件一定要加到核心配置文件

 *.hbm.xml文件的各属性意思如下:

name:类的全限定名

table:类对应的表

id标签:

       name:类属性   type:类属性对应的java类型   column:数据库列段

property标签:

       name:类属性   type:类属性对应的java类型   column:数据库列段

可以理解为:id标签是特殊的property标签

编码步骤:

1.对框架核心配置文件进行建模

2.获取sessionFactory工厂

3.获取session会话

4.开启事务(查询不需要)

5.session操作对象

6.提交事务(查询不需要事务)

7.关闭session

查询

package com.sjy.test;

import java.util.List;

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

public class ListDemo {
public static void main(String[] args) {
	Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
	SessionFactory sessionFactory = configure.buildSessionFactory();
	Session session = sessionFactory.openSession();
	List list = session.createQuery("from User").list();
	for (Object object : list) {
		System.out.println(object);
	}
	session.close();
}
}

 增加

package com.sjy.test;

import java.sql.Date;
import java.sql.Timestamp;

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

import com.sjy.entity.User;

public class AddDemo {
	public static void main(String[] args) {
		Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
		SessionFactory sessionFactory = configure.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		User user=new User();
		user.setBirthday(new Date(System.currentTimeMillis()));
		user.setId(88);
		user.setSex("男");
		user.setUserPwd("111222");
		user.setcreateDatetime(new Timestamp(System.currentTimeMillis()));
		user.setRealName("sjy");
		user.setUserName("aaaaa");
		session.save(user);
		transaction.commit();
		session.close();
	}
}

增加时id设置的是88,但是插入数据库的数据是15

原因是generator标签的class为increment (自增)

不自增可改为assigned

主键生成器要求

assigned:数据类型不限、保存前必须赋值

identity:数字,无需赋值

sequence:数字,无需赋值,默认使用hibernate_sequence这个序列

也可通过sequence/sequence_name参数赋值

increment:数字,无需赋值

 

 修改

package com.sjy.test;


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

import com.sjy.entity.User;

public class EditDemo {
	public static void main(String[] args) {
		Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
		SessionFactory sessionFactory = configure.buildSessionFactory();
		Session session = sessionFactory.openSession();
		Transaction transaction = session.beginTransaction();
		User user = session.get(User.class, 7);
		user.setUserName("牛马");
		System.out.println(user);
		transaction.commit();
		session.close();
	}
}

数据库: 

 删除

删除有两种方法

方法一:

User user = session.get(User.class, 7);
        session.delete(user);

方法二:

User user=new User();
        user.setId(6);
        session.delete(user); 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328528.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号