新手教学:简单使用hibernate框架
来源:互联网 发布:sql语句升序降序一起用 编辑:程序博客网 时间:2024/04/28 22:29
1.在www.hibernate.org 官网下载jar包。
ps:因为在hibernate.cfg.xml配置了
我使用的是:hibernate-release-5.0.12.Final
打开压缩包,找到\lib\required文件夹下所有jar,导入项目。
2.在项目src根目录配置hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- property 元素用于配置Hibernate中的属性 键:值 --> <!-- hibernate.connection.driver_class : 连接数据库的驱动 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- hibernate.connection.username : 连接数据库的用户名 --> <property name="connection.username">XXX</property> <!-- hibernate.connection.password : 连接数据库的密码 --> <property name="connection.password">XXX</property> <!-- hibernate.connection.url : 连接数据库的地址,路径 --> <property name="connection.url">XXX</property> <!-- show_sql: 操作数据库时,会 向控制台打印sql语句 --> <property name="show_sql">true</property> <!-- format_sql: 打印sql语句前,会将sql语句先格式化 --> <property name="format_sql">true</property> <!-- hbm2ddl.auto: 生成表结构的策略配置 update(最常用的取值): 如果当前数据库中不存在表结构,那么自动创建表结构. 如果存在表结构,并且表结构与实体一致,那么不做修改 如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列. create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失) create-drop(极少): 无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构. validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构. 如果表结构不一致将会抛出异常. --> <property name="hbm2ddl.auto">update</property> <!-- 数据库方言配置 org.hibernate.dialect.MySQLDialect (选择最短的) --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- hibernate.connection.autocommit: 事务自动提交 --> <property name="hibernate.connection.autocommit">true</property> <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession --> <property name="hibernate.current_session_context_class">thread</property> <!-- 引入ORM 映射文件 填写src之后的路径 --> <mapping resource="xxx/user.hbm.xml"/> </session-factory></hibernate-configuration>2.自定义包xxx,创建一个pojo对象
User.java
public class User {private Long id;private String name;private String password;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}3.创建映射对象
user.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping> <class name="hibernate1116.User" table="liu_test"><id name="id" ><generator class="native"/><!-- id主键,自动增长--></id><property name="name"></property><property name="password"></property> </class></hibernate-mapping>4.创建hibernate初始化类
HibernateInitialize.java
package hibernate1116;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;public class HibernateInitialize { private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();//ThreadLocal对象 private static SessionFactory sessionFactory = null; private static Session session; //静态块 static { try { Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build(); //ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build(); sessionFactory = cfg.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.out.print("创建会话工厂失败"); } } /** * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession(): null; threadLocal.set(session); } return session; } public static void rebuildSessionFactory() { try { Configuration cfg = new Configuration().configure("hibernate.cfg.xml"); ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().configure().build(); //ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build(); sessionFactory = cfg.buildSessionFactory(serviceRegistry); } catch (Exception e) { System.err.println("创建会话工厂失败"); e.printStackTrace(); } } /** * @return SessionFactory对象 */ public static SessionFactory getSessionFactory() { return sessionFactory; } /** * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null);// if (session != null) { session.close(); } }}5.创建主函数测试
package hibernate1116;import org.hibernate.Session;public class UserManager {public static void main(String[] args) {Session session= null;User user = new User();user.setId((long)22);user.setName("liujiahao");user.setPassword("123456");try {session = HibernateInitialize.getSession();session.beginTransaction();//添加session.save(user);//查询//User gUser = (User)session.get(User.class, (long)1);//System.out.println(gUser.getName());//删除//User gUser = (User)session.get(User.class, (long)1);//session.delete(gUser);//修改//User gUser = (User)session.get(User.class, (long)1);//gUser.setName("haha");//session.flush();session.getTransaction().commit();} catch (Exception e) {// TODO: handle exceptionsession.getTransaction().rollback();System.out.println("fail my sql");e.printStackTrace();}finally{HibernateInitialize.closeSession();}}}
ps:因为在hibernate.cfg.xml配置了
<property name="hbm2ddl.auto">update</property>
数据库中没有表时会自动创建
自此,hibernate添加功能已经完成。
阅读全文
0 0
- 新手教学:简单使用hibernate框架
- .net新手爬虫教学,简单易懂。
- Android开发框架xUtils3.x新手教学(三)使用注解绑定UI、资源和事件
- 新手hibernate简单配置
- Android开发框架xUtils3.x新手教学(二)HTTPS访问
- GitHub新手使用教学(从安装到使用)
- PowerDesigner新手简单使用
- hibernate的使用(新手)
- Hibernate框架简单应用
- Hibernate框架,简单实例
- 百度推送新手教学
- Android Studio新手教学
- Laravel新手教学视频
- Hibernate 框架的详细搭建与简单使用(一)
- Android开发框架xUtils3.x新手教学(一)SQLite数据库访问神器dBUtils
- Android开发框架xUtils3.x新手教学(四) BitmapUtils图片异步加载
- Android开发框架xUtils3.x新手教学(五) 其他方便的小组件
- Android : hellocharts-android-master图表框架集成 及 新手花式教学(干货满满)------柱状图
- 滑动验证码
- hadoop作业的几种提交方式
- GBK汉字的索引方法
- 详解C# Tuple VS ValueTuple(元组类 VS 值元组)
- AliNLP架构
- 新手教学:简单使用hibernate框架
- linux目录结构详解
- Git常用命令
- springboot(十一):Spring boot中mongodb的使用
- Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
- POI 导入excel
- PCA人脸识别个人理解及步骤
- 如何处理负载、高并发?
- mybatis调用存储过程