hibernate 框架开发环境搭建

本文介绍Hibernate框架的基本概念,演示如何搭建开发环境,包括创建实体类、配置映射文件及核心配置文件,并通过示例代码展示如何进行数据库操作。

Hibernate 是一个持久层框架,是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,

它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员

可以随心所欲的使用对象编程思维来操纵数据库。

Hibernate可以应用在任何使用JDBC的场合


 Hibernate 开发环境搭建步骤:

1)   创建一个 web工程

2)   导入相关的 jar

3) 创建一个 Student

         这个类为普通的Java类,写入getter setter方法。

package com.hibernate.vo;

public class Student {
	private Integer studentId;//必须提供一个ID
	private String studentName;
	private String homeAddress;
	private String schoolAddress;
	private Integer age;
	public Integer getStudentId() {
		return studentId;
	}
	public void setStudentId(Integer studentId) {
		this.studentId = studentId;
	}
	public String getStudentName() {
		return studentName;
	}
	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
	public String getHomeAddress() {
		return homeAddress;
	}
	public void setHomeAddress(String homeAddress) {
		this.homeAddress = homeAddress;
	}
	public String getSchoolAddress() {
		return schoolAddress;
	}
	public void setSchoolAddress(String schoolAddress) {
		this.schoolAddress = schoolAddress;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Student(Integer studentId, String studentName, String homeAddress,
			String schoolAddress, Integer age) {
		super();
		this.studentId = studentId;
		this.studentName = studentName;
		this.homeAddress = homeAddress;
		this.schoolAddress = schoolAddress;
		this.age = age;
	}
}

4)   写一个Student类的映射文件

           写一个 *.hbm.xml的配置文件,*表示要映射的实体类(Student

         导入约束(如果没有可复制的,需要与你导入的 jar包的版本一致)

找到 hibernate的核心包,我这里是hibernate3.jar。打开,找到dtd文件

选择 hibernate-mapping-3.0.dtd,打开即可找到约束

             类名映射表名、属性映射列名

            每个实体类都要一个映射文件,需放在与实体类同一个地方

 

<?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 package = "com.hibernate.vo">
	<class name = "Student" table = "student_sh">
		<!-- type属性和column属性都可以不写 -->
		<!-- type属性表示属性类型,不写会自动扫描。column属性映射到表中的列名,不写则自动补充为属性名 -->
		<id name = "studentId" type = "java.lang.Integer" column = "ID">
			<generator class="increment"></generator>
		</id>
			<property name="studentName" type="java.lang.String" column="name"></property>
			<property name="homeAddress" type="java.lang.String" column="home"></property>
			<property name="schoolAddress" type="java.lang.String" column="school"></property>
			<property name="age" type="java.lang.Integer" column="age"></property>
	</class>
</hibernate-mapping>

5) 写一个Hiberante的核心配置文件

必须使用 hibernate.cfg.xml作为主配置文件名,放在src目录下。

             导入约束(如果没有可复制的,需要与你导入的 jar包的版本一致)

找到 hibernate的核心包,我这里是hibernate3.jar。打开,找到dtd文件

选择hibernate-configuration-3.0.dtd,打开即可找到约束

             根据自己的数据库类型配置用于连接数据库的基本信息包括方言,可选配置可写可不写

                      指定对象映射文件的位置

 

<?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> 
      <!-- 配置数据库方言,告诉hibernate将对象的操作转换成底层数据库支持的标准的sql语句 -->
        <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
        <!-- 连接数据库的基本信息,根据自动的数据库类型填写-->
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">scott</property>
        <property name="connection.password">tiger</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        
        <!-- 可选配置 -->
        <!-- 自动建表 -->
        <property name="hbm2ddl.auto">update</property>
		<!-- 显示Hibernate持久化操作所生成的SQL语句 -->
		<property name="show_sql">true</property>  
		<!-- 将SQL脚本进行格式化后再输出 -->
		<property name="hibernate.format_sql">true</property>
        
        <!-- 配置映射文件的位置 -->
        <mapping resource = "com/hibernate/vo/student.hbm.xml"/>
    </session-factory>
    
</hibernate-configuration>


6) 测试

          具体看测试类代码

 

package com.hibernate.vo;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class StudentHB {
	public static void main(String[] args) {
		//实例化一个 Configuration 调用该方法默认加载 src/hibernate.cfg.xml
		Configuration cfg = new Configuration().configure();
		//生成接口对象
		SessionFactory sf = cfg.buildSessionFactory();
		//从工厂中获取并打开session
		Session session = sf.openSession();
		//开启事务
		Transaction tr = session.beginTransaction();
		
		Student s = new Student(01, "xiao", "jiangxi", "hunan", 24);//创建对象
		Student s2 = new Student(02, "Linda", "beijing", "xiaoxue", 24);
		
		try {
			session.save(s);//保存对象
			session.persist(s2);
			tr.commit();
			System.out.println("success");
		} catch(HibernateException hs) {
			hs.printStackTrace();
			tr.rollback();//出错则回滚,保证事务的原子性
		} finally {
			session.close();//关闭资源
			sf.close();
			System.out.println("over");
		}
	}
}


运行完后,就可以去数据库中查看数据是否成功保存了。运行前记得打开数据库的监听器等服务,如果在主配置文件中没配置自动建表的,需要手动去数据库中建表

 

【SCI一区复现】基于配电网韧性提升的应急移动电源预配置和动态调度(下)—MPS动态调度(Matlab代码实现)内容概要:本文档围绕“基于配电网韧性提升的应急移动电源预配置和动态调度”主题,重点介绍MPS(Mobile Power Sources)动态调度的Matlab代码实现,是SCI一区论文复现的技术资料。内容涵盖在灾害或故障等极端场景下,如何通过优化算法对应急移动电源进行科学调度,以提升配电网在突发事件中的恢复能力与供电可靠性。文档强调采用先进的智能优化算法进行建模求解,并结合IEEE标准测试系统(如IEEE33节点)进行仿真验证,具有较强的学术前沿性和工程应用价值。; 适合人群:具备电力系统基础知识和Matlab编程能力,从事电力系统优化、配电网韧性、应急电源调度等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现高水平期刊(SCI一区、IEEE顶刊)中关于配电网韧性与移动电源调度的研究成果;②支撑科研项目中的模型构建与算法开发,提升配电网在故障后的快速恢复能力;③为电力系统应急调度策略提供仿真工具与技术参考。; 阅读建议:建议结合前篇“MPS预配置”内容系统学习,重点关注动态调度模型的数学建模、目标函数设计与Matlab代码实现细节,建议配合YALMIP等优化工具包进行仿真实验,并参考文中提供的网盘资源获取完整代码与数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值