JAVA EE基础教程(5)hibernate的基本使用(视频笔记)
来源:互联网 发布:中国和英国的数据差别 编辑:程序博客网 时间:2024/04/28 02:37
推荐51cto上的教程。这里将其中的代码笔记如下。
基本简介
ORM的思想是讲对数据库的操作转化为对一个对象的操作。讲一个类对应为一个表,一条记录对应为一个表的行,对象的属性对应一列。这个和JDBC不一样,虽然读出和改变的都是对象,但是还是要调用update语句,但是,在ORM框架中,我们可以实时的改变数据库中的值。一句话,hibernate是对 jdbc的一个更直观的封装。具体的映射被称为存储在对象关系映射文件中。hibernate主要竞争对手是mybaits。
写hibernate大概分为四个步骤
(1)创建hibernate配置文件
(2)创建持久化类
(3)创建对象-关系映射文件
(4)通过hibernate api编写访问数据库的代码
最后实现的效果是上层代码通过hibernate api访问持久化类的对象。而持久化类则通过对象关系映射文件和底层数据库直接相关。
(1)配置文件如下
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- 连接数据库的基本信息 --> <property name="connection.username">root</property> <property name="connection.password">123</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///Demo</property> <!-- 配置hibernate的基本信息 --> <!-- 数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!-- 执行操作时是否在数据台打印SQL --> <property name="show_sql">true</property> <!-- 是否对SQL进行格式化 --> <property name="format_sql">true</property> <!-- 制定自动生成数据表的策略 --> <property name="hbm2ddl.auto">update</property> </session-factory></hibernate-configuration>
(2)配置持久化类
package com.gdl.hibernate.helloworld;import java.sql.Date;//一般的javabeanpublic class News { private Integer id; private String title; private String author; private Date date; public News(String title, String author, Date date) { super(); this.title = title; this.author = author; this.date = date; } public News(){ } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public String toString() { return "News [id=" + id + ", title=" + title + ", author=" + author + ", date=" + date + "]"; }}
(3)书写对应关系
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2016-7-15 18:06:43 by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping> <class name="com.gdl.hibernate.helloworld.News" table="NEWS"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <!-- 指定主键的生成方式 ,这里是使用数据库本地的方式--> <generator class="native" /> </id> <property name="title" type="java.lang.String"> <column name="TITLE" /> </property> <property name="author" type="java.lang.String"> <column name="AUTHOR" /> </property> <property name="date" type="java.sql.Date"> <column name="DATE" /> </property> </class></hibernate-mapping>
(4)最后,我们来写我们的test。
package com.gdl.hibernate.helloworld;import static org.junit.Assert.*;import java.sql.Connection;import java.sql.Date;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;import com.mysql.jdbc.PreparedStatement;public class HibernateTest { @Test public void test() { //1 创建一个session factory对象 SessionFactory sessionFactory =null; //首先,配置configuration对象。用于对应hibernate基本配置信息和对象关系映射信息 Configuration configuration = new Configuration().configure(); //创建一个serviceRegistry对象 //hibernate的任何配置和服务都需要在该对象中注册,然后才能有效。 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder() .applySettings(configuration.getProperties()) .buildServiceRegistry(); //最后session factory对象 sessionFactory = configuration.buildSessionFactory(serviceRegistry); //2 创建一个session对象 Session session = sessionFactory.openSession(); //3开始事务 Transaction transaction = session.beginTransaction(); //4执行保存操作 News news = new News("java","GDL",new Date(new java.util.Date().getTime())); session.save(news); //5提交事务 transaction.commit(); //6关闭session session.close(); //7关闭session factory对象 sessionFactory.close(); //使用jdbc进行数据库访问 //GetAll(); } private static Connection GetConn(){ String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/demo"; String userName = "root"; String password =""; Connection conn = null; try{ Class.forName(driver); conn = (Connection)DriverManager.getConnection(url,userName,password); }catch(ClassNotFoundException e){ e.printStackTrace(); }catch(SQLException e){ e.printStackTrace(); } return conn; } private static Integer GetAll(){ Connection conn = GetConn(); String sql = "select * from mysql.user"; PreparedStatement pstmt; try{ pstmt = (PreparedStatement)conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); int col = rs.getMetaData().getColumnCount(); System.out.println("=========="); while(rs.next()){ for(int i=1;i<=col;i++){ System.out.println(rs.getString(i)+"\t"); } } conn.close(); }catch(SQLException e){ e.printStackTrace(); } return null; }}
上述操作完成了添加一个表并修改表中的数据。
0 0
- JAVA EE基础教程(5)hibernate的基本使用(视频笔记)
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Hibernate(一)基本用法
- Java EE的Struts 2使用笔记
- 【Java EE (Struts2 + Spring + Hibernate)开发】: Struts2(一)基本用法(待续)
- 【Java EE (Struts2 + Spring + Hibernate)开发】系列之 Spring(一)基本用法
- 【阅读笔记】《Java EE企业应用实战》(第四版)第七章——Spring的基本用法
- Java EE开发第四章:JDBC的基本使用
- 【Java EE (Struts2 + Spring + Hibernate)开发】:Spring(二)深入使用
- java ee学习笔记归纳(一)
- 自学Java EE 笔记(第二天)
- Java EE中filter(过滤器)的使用
- Java EE 的一点笔记
- J2EE基础教程(4):struts框架(视频笔记)
- [Matlab]基础教程学习笔记(六):NoteBook的使用
- java EE视频下载
- Java Web笔记:Java EE架构及Java EE核心设计模式(MVC)
- hibernate笔记(一)hibernate基本配置
- 【《Objective-C基础教程 》笔记】(八)OC的基本事实和OC杂七杂八的疑问
- live555详解
- 【一天一道LeetCode】#263. Ugly Number
- ls_cd_file_wc_date_history
- SVM(1)-概念与理解
- 关于RxJava学习总结
- JAVA EE基础教程(5)hibernate的基本使用(视频笔记)
- 【一天一道LeetCode】#345. Reverse Vowels of a String
- Git 常用命令
- JAVA FOR ACM 备忘录
- Mint17安装Remarkable编辑器
- STM32学习笔记之定时器的配置
- 引力与引力场
- SHGetSpecialFolderPath函数简介
- Scala学习(3)——集合(基本数据结构)