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 ...
随机推荐
- unity对敏感词库处理的记录
string txt = Resources.Load<TextAsset>("minganci").ToString(); //string txt = " ...
- Hibernate实体类编写规则和主键策略
一.实体类的编写规则 1.属性要是私有的. 2.要有公开的setter和getter方法供外界访问和修改. 3.每一个实体类要有一个属性作为唯一值(一般都是使用对于数据表的主键). 4.建议数据类型不 ...
- Golang教程:接口
什么是接口 在面向对象语言中,接口一般被定义为 :接口定义了一个对象的行为.它仅仅指定了一个对象应该做什么.具体怎么做(实现细节)是由对象决定的. 在 Go 中,一个接口定义为若干方法的签名.当一个类 ...
- Query performance optimization of Vertica
Don't fetch any data that you don't need,or don't fetch any columns that you don't need. Because ret ...
- Tomcat配置连接池的java实现
1.准备 JNDI(Java Naming and Directory Interface),Java命名和目录接口.JNDI的作用就是:在服务器上配置资源,然后通过统一的方式来获取配置的资源.我们这 ...
- openlayers 各种图层,持续更新
/*高德地图*/ var vectorLayerLine = new ol.layer.Tile({ source: new ol.source.XYZ({ urls: [ "http:// ...
- 快速搭建maven私服 Artifactory on Docker
1.下载官方镜像 docker pull docker.bintray.io/jfrog/artifactory-oss:latest 2.启动容器 docker run --name artifac ...
- 中南oj 1215: 稳定排序
1215: 稳定排序 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 111 Solved: 43 [Submit][Status][Web Boar ...
- SQLSTATE[HY000] [2002] No such file or directory in
这个错误将数据库配置信息的localhost改成127.0.0.1就行了
- Class.forName之坑
今天遇到个问题 找不到类,最后发现 Class.forName中要完整的类名