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

Hibernate入门以及主键生成策略

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

Hibernate入门以及主键生成策略

什么是Hibernate框架 

(优势:跨数据库无缝移植)

(劣势:底层代码太多,内存较大,国产数据库的兴起)

一:ORM框架/持久层框架    jdbc的一个框架
二:object reference mapping    对象关系映射
三:通过管理对象来改变数据库中的数据
四:通过管理对象来操作数据库

如何在项目中添加hibernate支持(手动添加)

一:添加hibernate相关依赖
二:在resource目录下添加hibernate.cfg.xml(核心配置文件)
    1.添加DTD支持
    2.添加Hibernate的配置
            数据库相关(connection.username|connection.password|connection.url|connection.driver_class|dialect)
            调试相关(show_sql|format_sql)
三:在开发阶段再创建实体类和实体映射文件(*.hbm.xml)
      实体必须实现Serializable接口

  小结:hibernate.cfg.xml(1) 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.sg.test;

import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;

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

import com.sg.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.setCreateDatetime(new Timestamp(System.currentTimeMillis()));
		user.setId(55);
		user.setRealName("ddd");
		user.setRemark("ddd");
		user.setSex("女");
		user.setUserName("2133");
		user.setUserPwd("1212");
		session.save(user);
		transaction.commit();
		session.close();
	}
}

结果展示:

这里出现一个问题,我传的id为55,但数据库变成了15,

是因为hibernate有4种控制方式 

第一种是程序员自己控制:assigned

第二种是数据库控制:identity(标识列/自动增长)   sequence

第三种是hibernate控制:increment

第四种是native控制

控制是在上面的那个User.hbm.xml中控制

我们改成自己控制再执行一遍

结果展示:

 

修改

package com.sg.test;

import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;

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

import com.sg.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, 55);
		user.setRealName("哦呵呵");
		System.out.println(user);
		transaction.commit();
		session.close();
	}
}

 结果展示:

删除

方式一

package com.sg.test;

import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;

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

import com.sg.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, 55);
		session.delete(user);
		transaction.commit();
		session.close();
	}
}

 结果展示:

 方式二:

package com.sg.test;

import java.sql.Date;
import java.sql.Timestamp;
import java.util.List;

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

import com.sg.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, 55);
		User user=new User();
		user.setId(15);
		session.delete(user);
		transaction.commit();
		session.close();
	}
}

结果展示:

 

拜拜了各位!!!

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

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

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