Hibernate学习(一)环境配置与测试

## 创建HelloWorld程序	

1) 新建Java程序
2)导入hibernate需要的jar包到lib下
在这里插入图片描述
3)在src下编写配置文件hibernate.cfg.xm (根据数据库情况编写)

<!-- 约束 -->
<!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>
		<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
		<property name="connection.username">root</property>
		<property name="connection.password">root</property>
		<!-- 指定数据库 -->
		<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
		<!-- 打印sql语句 -->
		<property name="show_sql">true</property>
		<!-- 格式化sql语句 -->
		<property name="format_sql">true</property>
		
		<!-- 指定映射文件 -->
		<mapping resource="com/qjh/pojo/User.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

4)新建数据表
在这里插入图片描述
5)新建User类 (建议序列化 使用HanshCode和equals方法 getter setter toString)

package com.qjh.pojo;
import java.io.Serializable;
//POJO类必须提供无参构造方法
//推荐实现序列化,重写hashCode和equals方法
public class User implements Serializable{
	private Integer id;
	private String name;
	private Integer age;
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((age == null) ? 0 : age.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		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 == null) {
			if (other.age != null)
				return false;
		} else if (!age.equals(other.age))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
}

6)在包下编写User.hbm.xml映射文件

<!-- 约束-->
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 映射文件 -->
  <hibernate-mapping>
  <!-- package指定包    table指定类所对应的数据表名 -->
  	<class name="com.qjh.pojo.User" table="t_user">
  		<!-- 主键映射 
  			在hibernate中,类所对应的表必须要有主键
  			例:name为类的属性名     colum是属性名对应的表对应名称,类型为属性类型
  			column默认和属性名一致,类型也默认一致
  		-->
  		<id name="id" column="id" type="int">
  			<!-- 主键生成策略 即自增长-->  
  			<generator class="native"/>
  		</id>
  		<property name="name" column="name" type="string"></property>
  		<property name="age" column="age" type="int"></property>
  	</class>
  </hibernate-mapping>

7)测试结果 由于我的版本是3 因此不用创建服务

package com.qjh.pojo;

import javax.imageio.spi.ServiceRegistry;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class Test {
		public static void main(String[] args) 
		{
			//1.读取hibernate配置文件
			Configuration cfg=new Configuration().configure();
			
			//2.创建服务注册    hibernate4以后需要创建服务  4版本以前不用
					 
			//3.新建SessionFactory对象
			SessionFactory sf = cfg.buildSessionFactory();
			
			//4.创建session对象  注意不是httpsession
			Session session =sf.openSession();
			
			//5.获取数据
			User user = session.get(User.class, 1);
			
			System.out.println(user);
		
			//6.释放资源
			sf.close();
			session.close();
		}
}

结果
在这里插入图片描述

发布了8 篇原创文章 · 获赞 7 · 访问量 662

猜你喜欢

转载自blog.csdn.net/weixin_40523463/article/details/90547523
今日推荐