Struts学习-Hibernate
Hibernate (开放源代码的对象关系映射框架)
http://www.cnblogs.com/wenwen123/p/5658625.html
一、
1.新建

2.配置
<!-- hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.12.Final</version>
</dependency> <!-- mysql-connector-java
当前最新测试版本:8.0.8-dmr
当前最新版稳定版本:6.0.6
上一代的稳步版本:5.1.44
-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.8-dmr</version>
</dependency>
3.Test.java,配置类
public static void main(String[] args) {
//第一步:需要一个配置类
Configuration config = new Configuration();
//第二步:对配置类加载一个配置文件
config.configure("/hibernate.cfg.xml");
//非常慢
SessionFactory factory = config.buildSessionFactory();
System.out.println("factory:"+factory);
}
4.hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--
JDBC中数据库的URL地址
mysql5:jdbc:mysql://localhost:3306/pyq
mysql6:jdbc:mysql://localhost:3306/pyq?serverTimezone=UTC
--> <property name="connection.url">jdbc:mysql://localhost:3306/pyq?serverTimezone=UTC</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!--
老版本mysql5.0是:com.mysql.jdbc.Driver
新版mysql6.0是:com.mysql.cj.jdbc.Driver
-->
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<!--此属性留给以后再说-->
<property name="hbm2ddl.auto">update</property>
<!--指定一种数据库方言-->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!--SQL语句是否格式化,仅仅影响调试信息是否好看,不影响程序运行-->
<property name="format_sql">true</property>
<!--verifyServerCertificate--> </session-factory>
</hibernate-configuration>
Test.java右键(ps:要先把)数据库启动



地址:https://gitee.com/MuNianShi/Hibernate001.git
二、数据库的链接,这里用的是MySQL
Mysql里有一个数据库pyq,在数据库pyq里建表

1.先写一个实体类
2.在桌面上建立一个文件夹com.nf.entity在里面建Student.hbm.xml,再把它复制到resources里面
3.在测试类的第二步里
//第二步:对配置类加载一个配置文件
config.configure("/hibernate.cfg.xml");//这里要删掉
4.在hibernate.cfg.xml文件里添加
<mapping resource="com.nf.entity/Student.hbm.xml"></mapping>
5.编写Student.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.nf.entity">
<!--
private Integer id;
private String name;
private String sex;
-->
<class name="Student" table="t_student">
<id name="id" column="id888">
<!--generator生成的意思
mysql:native
-->
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String" column="name888" length="20" not-null="true"></property>
<property name="sex" type="java.lang.String" column="sex888" length="4"></property> </class> </hibernate-mapping>

地址:https://gitee.com/MuNianShi/Hibernate002.git
三、增删改查,事务
一、下载相关jar包
(POM.xml hibernate-core,mysql-connector-java)
二、配置数据库相关信息hibernate.cfg.xml
(driver,url,username,password,dialect)
目的:获得一个SessionFactory实例
【后期:合并到spring】
三、ORM技术,通过Xxx.hbm.xml
实现java类的属性跟表的字段要一一对应
四、通过Session的API,实现增删改查
3.主要处理测试类Test.java,在其中添加方法。
首先先修改这个文件

修改Test.java
增
package com.nf; import com.nf.entity.Student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration; public class Test { public static void main(String[] args) {
//第一步:需要一个配置类
Configuration config = new Configuration();
//第二步:对配置类加载一个配置文件
config.configure("/hibernate.cfg.xml");
//非常慢
SessionFactory factory = config.buildSessionFactory();
//System.out.println("factory:"+factory); //第三步:通过Session的API,实现增删改查
Session session = factory.openSession(); //1.增
//这是我们学习Mysql使用的增加:"insert into Student(name,sex) values(?,?);"
Student s1 = new Student();
s1.setName("奶妈");
s1.setSex("女");
session.save(s1); //这里是关闭
session.close();
factory.close();
}
}

删:其它不变
//4.删
//要先查到,然后删除
Student ss = session.get(Student.class,3);
session.beginTransaction();
session.delete(ss);
session.getTransaction().commit();

改:其它不变
//3.改
//要先查到,然后修改
Student ss = session.get(Student.class,3);
ss.setName("剑魔");
session.beginTransaction();
session.update(ss);
session.getTransaction().commit();

查:其它不变
//2.查询 Query query = session.createQuery("from Student ");
//查询分2种:
// 1.按HQL查询(n条记录)(没写)
// 2.直接过ID指定获取一个实例:select * from t_student where id=3
Student ss = session.get(Student.class,3);
System.out.println( ss.getName() );
//这里是关闭
session.close();
factory.close();

事务:故意让他发生异常,但不修改内容
//5.感受一下事务的回滚
session.beginTransaction();
try {
Student s1 = session.get(Student.class,1);
Student s2 = session.get(Student.class,2);
s1.setSex("女");
s2.setSex("美颜后的女性");
session.update(s1);
session.update(s2);
//如果全部成功,提交事务
session.getTransaction().commit();
}catch (Exception e){
System.out.println("发生异常:"+e.getMessage());
//如果有异常,事务回滚
session.getTransaction().rollback();
}


地址:https://gitee.com/MuNianShi/Hibernate002.git
Struts学习-Hibernate的更多相关文章
- Java新手如何学习Spring、Struts、Hibernate三大框架?(转)
整理知乎大牛答案: 1.入门看文档(blog,书籍等等),深入理解配置文件的含义(Spring.Struts.Hibernate); 2.遇到问题,自己动手解决,如果解决了,为什么这样解决?(凡事总问 ...
- 用eclipse搭建SSH(struts+spring+hibernate)框架
声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...
- Struts+Spring+Hibernate进阶开端(一)
入行就听说SSH,起初还以为是一个东西,具体内容就更加不详细了,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基本原理与思想,总算接 ...
- 在Eclipse中使用Struts和Hibernate框架搭建Maven Web项目
前言 学习使用Java还是2012年的事情,刚开始学习的Java的时候,使用的是MyEclipse工具和SSH框架.初学者适合使用MyEclipse,因为他将struts.Spring和Hiberna ...
- 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)
[SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...
- 3大框架Struts、Hibernate、Spring简单了解
3大框架:Struts.Hibernate.Spring 基本概念:Spring/Struts/Hibernate是干嘛用的? 三个框架产生的技术历史背景 学习前首先应该掌握的基础知识 学习一个开发框 ...
- Struts + Spring + Hibernate 进阶开端(一)
Long Long ago,就听说过SSH,起初还以为是一个东东,具体内容更是不详,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基 ...
- Struts+Spring+Hibernate项目的启动线程
在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ...
- Struts,spring,hibernate三大框架的面试
Struts,spring,hibernate三大框架的面试 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3 ...
随机推荐
- ubuntu16.04 安装python3.6
https://www.cnblogs.com/yjlch1016/p/8641910.html
- android volley 发送 POST 请求
Map<String, String> params = new HashMap<String, String>(); params.put("fromUser&qu ...
- javaagent笔记及一个基于javassit的应用监控程序demo
javaagent基本用法 定义入口premain public static void premain(String agentArgs, Instrumentation inst) { Syste ...
- iOS 系统架构及常用框架(iOS的系统架构分为四个层次)
1.iOS基于UNIX系统,因此从系统的稳定性上来说它要比其他操作系统的产品好很多 2.iOS的系统架构分为四层,由上到下一次为:可触摸层(Cocoa Touch layer).媒体层(Media l ...
- 《JavaScript语言精粹》读书笔记
第三章:对象 //1.定义一个方法 method Function .prototype.method=function(name, func){ this.prototype[name]=func; ...
- Java - 如何进行安全发布
首先让我简单解释一下所谓"发布". 发布(publish),使对象可以在当前作用域之外的代码中可见,如果该对象被发布,则该对象的非私有域中引用的所有实例同样也会被发布. 不仅仅是作 ...
- 在 Web 应用中创建 Node.js 应用程序
本分步指南将通过 Azure Web 应用帮助您启动并运行示例 Node.JS 应用程序.除 Node.JS 外,Azure Web 应用还支持其他语言,如 PHP..NET.Node.JS.Pyth ...
- 获取路径path
request 的常用方法 request.getSchema() 返回当前页面使用的协议,http 或是 https; request.getServerName() 返回当前页面所在的服务器的名字 ...
- bnu Game 博弈。
Game Time Limit: 10000ms Case Time Limit: 10000ms Memory Limit: 65536KB 64-bit integer IO format: ...
- 读EntityFramework.DynamicFilters源码_心得_设计思想_04
前几次,我们从说明文档,示例,单元测试了解了怎么用这个动态过滤器,那么如果仅仅是为了实现目的,知道怎么用就可以完成相应的功能开发,但我还想了解的问题是 作者是怎么将动态过滤器与EF结合的 有哪些设计思 ...