项目结构:
Hibernate 配置文件
hibernate.cfg.xml
<?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="myeclipse.connection.profile">mysqlTest</property>
<property name="connection.url">
jdbc:mysql://10.2.11.6:3306/yyj <!-- ?characterEncoding=utf-8 处理编码 -->
</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<mapping resource="com/yns/pojo/Student.hbm.xml" />
</session-factory>
</hibernate-configuration>
hibernate映射文件
Student.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.yns.pojo.Student" table="student">
<!-- 属性名 和表的字段一样可以不写 -->
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"></property>
<property name="pass"></property>
</class>
</hibernate-mapping>
TestMain.java
package com.yns.pojo;
import java.io.Serializable;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
public class TestMain {
public static void main(String[] args) {
//主意Configuration()选hibernate下的 加载hibernate 配置文件
Configuration configure = new Configuration().configure();//可以写configure(hibernate.cfg.xml),防止配置文件变动;
SessionFactory sessionFactory = configure.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//返回主键值 保存到数据库一条数据
/*int id = (Integer) session.save(new Student(0,"aa", "123456"));
System.out.println(id+"");*/
//查询全部
/*Query query = session.createQuery("from Student");
List<Student> list = query.list();
for(Student stu:list){
System.out.println(stu.toString());
}*/
//简单的条件查询
/*Query query = session.createQuery("from Student where id=?");
query.setParameter(0, 2);
List<Student> list = query.list();
for(Student stu:list){
System.out.println(stu.toString());
}*/
//----------------一下可以通过 抛异常判断是否成功
//简单的条件查询-------- get(操作的对象,主键值) 主键不存在则返回 null -----get 会立刻执行数据库 相应操作(无延迟加载)
//Student stu = (Student) session.get(Student.class, 2); //如果 2----》20
//简单的条件查询-------- load(操作的对象,主键值) 如果主键不存在 则会报错抛出异常 load不会立刻执行数据库 只有当获取的对象被使用的时候才会执行(延迟加载)
//提高效率 所以不能随便关闭session 会是load 无法使用报错 no——session 过滤器 可以处理这个问题
//Student stu = (Student) session.load(Student.class, 2);
//更新
session.update(new Student(2, "张三","123456"));
//System.out.println(stu);// 2--->20 get结果为null 20是不存在的主键值 load 报错
//删除
Student student = new Student();
student.setId(1);
session.delete(student);
transaction.commit();//提交事务
}
}
Ps:源码下载路径: 点我下载源码
本文提供了一个关于Hibernate框架的基础教程,包括配置文件设置、映射文件定义及Java代码实现等关键环节,展示了如何通过Hibernate进行数据库操作。

1664

被折叠的 条评论
为什么被折叠?



