java之hibernate之helloworld
这篇文章,会一步一步的演示hibernate的使用。
目录结构如下:
1.新建java项目
2.增加一个lib文件夹,并把 hibernate必须的jar包 和 数据库驱动包 一起复制进去
然后把hibernate必需的jar包和mysql的驱动包复制进入
3.把lib下的jar包 ,进行build path
注意:是选中lib下的jar包进行build,而不是选中lib文件夹
效果如下:
4.准备数据库表
5.在src下编写 hibernate.cfg.xml 文件
添加过程如下:
hibernate.cfg.xml 文件内容如下:
<!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 name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 默认 localhost: -->
<property name="connection.url">jdbc:mysql:///test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property> <!-- 通用配置 -->
<!-- 方言:hibernate要支持多种数据库,根据不同数据库生成对应的sql语句
告诉hibernate使用的什么数据库,以便生成对应数据库的sql
-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 打印sql语句 -->
<property name="show_sql">true</property>
<!-- 映射信息 -->
<mapping resource="cn/vincent/pojo/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
6.编写User类(或者叫pojo类),是放在新加的cn.vincent.pojo包下
结构如下:
/**
* pojo类 需要实现序列化接口
* 必须提供无参的构造方法,
* 推荐将hashCode,equals重写
* @author siggy
*
*/
public class User implements Serializable{
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age != other.age)
return false;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
对于上述代码,可以在写好private属性后,如下所示,进行生成get/set方法,和hashcode即equal方法
7.编写pojo类所对应的的映射文件:User.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>
<class name="cn.vincent.pojo.User" table="t_user">
<id name="id" column="id" type="int">
<generator class="native"></generator>
</id>
<property name="name" column="name" type="java.lang.String"/>
<property name="age" column="age" type="int"/>
</class>
</hibernate-mapping>
8.编写代码实现查询单个对象
结构如下:
内容如下:
public class HibernateDemo { public static void main(String[] args){
//1、读取hibernate配置文件
Configuration cfg = new Configuration().configure();
//2、创建服务注册对象
ServiceRegistry registry = new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties())
.build();
//3、生成SessionFactory对象
SessionFactory factory = cfg.buildSessionFactory(registry);
//4、生成Session对象
Session session = factory.openSession();
//5、查询
User user = (User)session.get(User.class, 2);
System.out.println(user.getId()+"----"+user.getName()+"----"+user.getAge());
//6、关闭session
session.close();
//在应用程序中sessionFactory不用关闭
factory.close();
}
}
github地址:https://github.com/Vincent-yuan/hibernate
java之hibernate之helloworld的更多相关文章
- 数据库、Java与Hibernate数据类型对照
数据类型对照表: 标准SQL数据类型 Java数据类型 Hibernate数据类型 TINYINT byte.java.lang.Byte byte SMALLINT short.java.lang. ...
- maven 依赖文件 pom.xml 编译 mvn compile 运行 不用mvn exec:java -Dexec.mainClass="hello.HelloWorld" 打成jar包 mvn package mvn install http://blog.csdn.net/yaya1943/article/details/48464371
使用maven编译Java项目 http://blog.csdn.net/yaya1943/article/details/48464371 使用"mvn clean"命令清除编 ...
- Java,Hibernate,标准sql数据类型之间的对应表
(2010-07-14 19:53:50) 转载▼ 标签: 杂谈 分类: JAVA Hibernate API简介 其接口分为以下几类: l 提供访问数据库的操作的接口: l ...
- JAVA spring hibernate 多数据源配置记录
数据源配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
- JAVA EE Hibernate基础一之环境配置
对于JAVA开发高级,hibernate是java三大框架之一,足以见得它的重要性,那么对于hibernate的使用大家有了解多少呢?从今天开始我将带领大家一道共同探讨一下hibernate的知识,h ...
- Hibernate Java、Hibernate、SQL 之间数据类型转换
Hibernate映射类型 Java类型 标准SQL类型 integer java.lang.Integer integer long java.lang.Long bigint sho ...
- BAE3.0上的java+tomcat+hibernate代码发布
在BAE上使用hibernate说起来也简单,但因为一个不小心,耽误了好几个小时. 百度文档中有说: http://developer.baidu.com/wiki/index.php?title=d ...
- java入门第二步之helloworld【转】
前一篇博客已经介绍了jdk的安装:接下来我们就乘热打铁,完成第一个程序:helloworld(每学一样程序的新东西都是从实现helloworld开始的) 1.不是用开发工具IDE,只是使用记事本来实现 ...
- Java基础01 ------ 从HelloWorld到面向对象
Java是完全面向对象的语言.Java通过虚拟机的运行机制,实现“跨平台”的理念.我在这里想要呈现一个适合初学者的教程,希望对大家有用. "Hello World!" 先来看一个H ...
随机推荐
- ORACLE多条件的统计查询(case when)
前几天要做一个统计查询的功能,因为涉及多张表,多种条件的统计分析.一开始便想到了UNION和IF语句,然后写了1000多行代码,就为了查30条数据觉得不应该. 然后就开始百度,多种条件下的统计.然后有 ...
- 用Visual Studio编写UDF的一点小技巧(二)
- conda中重要的三个概念:环境、通道和包
基本使用conda必须要了解的三个概念:虚拟环境.通道和包. conda提供了在python环境下重要的编程环境管理功能,包括环境隔离和依赖包管理. 环境隔离通过虚拟环境实现,与此相关的命令有: co ...
- C++ Java throw goto
throw goto - 国内版 Binghttps://cn.bing.com/search?FORM=U227DF&PC=U227&q=throw+goto C++ throw 代 ...
- # 61条面向对象设计的经验原则-《OOD启思录》Arthur J.Riel
61条面向对象设计的经验原则-<OOD启思录>Arthur J.Riel 原文 http://blog.csdn.net/cpluser/article/details/129291 61 ...
- 一款阿里开源的 Java 诊断工具
Arthas是什么鬼? Arthas是一款阿里巴巴开源的 Java 线上诊断工具,功能非常强大,可以解决很多线上不方便解决的问题. Arthas诊断使用的是命令行交互模式,支持JDK6+,Linux. ...
- Java基础 switch 简单示例
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- springboot 整合OSS
OSS 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量.安全.低成本.高可靠的云存储服务.OSS可用于图片.音视频.日志等海量文件的存储.各种终端 ...
- 利用Flex&b 开发一门语言
https://blog.csdn.net/CrazyHeroZK/article/details/87359818
- jsConfig那些事儿
jsConfig 是为了解决 vscode 的警告. { "compilerOptions": { "experimentalDecorators": true ...