Hibernate入门 连接Oracle数据库 简单增删改查

最近入门学习Hibernate框架,想分享总结一下踩过的坑和成功后的案例。

所用软件:

eclipse

Oracle数据库 (如果你使用的不是Oracle数据库可以修改hibernate.cfg.xml里面的配置)

现在,我们来看一下我们的包结构和数据库表结构

第一步:建立eclipse项目

1.eclipse里面新建一个Dynamic Web Project项目

2.在src中建一个名叫hibernate.cfg.xml的xml文件和两个分别叫com.Sakura.maya.model和com.Sakura.maya.test的包。

3.在com.Sakura.maya.model包中建两个类Hibernate.java和Hibernate.hbm.xml的文件

4.在com.Sakura.maya.test包中建立一个叫HibernateAction的类

结构如下:
在这里插入图片描述
第二步:引入jar包

包名如下:
在这里插入图片描述
第三步:创建数据库

create table Table_wcc_text( 
stu_id      number(10)   primary key, 
stu_name    varchar2(20) not null, 
stu_sex     varchar2(20)  default 'men' check(stu_sex in('men','women'))
 )

结构如下:
在这里插入图片描述
第四步:加入代码

1.Hibernate.java

package com.Sakura.maya.model;

public class Hibernate {
	private int stu_id;
	private String stu_name;
	private String stu_sex;
	public int getStu_id() {
		return stu_id;
	}
	public void setStu_id(int stu_id) {
		this.stu_id = stu_id;
	}
	public String getStu_name() {
		return stu_name;
	}
	public void setStu_name(String stu_name) {
		this.stu_name = stu_name;
	}
	public String getStu_sex() {
		return stu_sex;
	}
	public void setStu_sex(String stu_sex) {
		this.stu_sex = stu_sex;
	}
	@Override
	public String toString() {
		return "HibernateAction [stu_id=" + stu_id + ", stu_name=" + stu_name
				+ ", stu_sex=" + stu_sex + "]";
	}
}

2.Hibernate.hbm.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="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
       <!--  如果不是Oracle数据库请修改-->
        <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> --> <!-- 数据库方言 如果不是Oracle数据库请修改-->
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property><!-- 引用jdbc包 如果不是Oracle数据库请修改-->
        <property name="hibernate.connection.username">用户名</property>
        <property name="hibernate.connection.password">密码</property>
        <property name="hibernate.connection.url">jdbc:oracle:数据库链接</property> <!-- 数据库链接 -->
        <property name="show_sql">true</property> <!-- true 执行完在控制台打印SQL语句 -->
            <!-- 表映射加载  -->
        <mapping resource="com/Sakura/maya/model/Hibernate.hbm.xml"/>
        
    </session-factory>
</hibernate-configuration>

3.hibernate.cfg.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 default-lazy="false" package="com.Sakura.maya.model">    <!-- 导入包 -->

    <class name="Hibernate" table="Table_wcc_text"> <!-- 表名 -->
        <id name="stu_id">    <!-- 主键 -->                        
            <generator class="assigned"/><!-- 如果主键是自增长改为class="native" -->
        </id>
        <!-- 对应的各个字段名 -->
        <property name="stu_name"/>
        <property name="stu_sex"/>
    
    </class>   
</hibernate-mapping>

4.HibernateAction.java

package com.Sakura.maya.test;

import java.util.List;

import javax.security.auth.kerberos.DelegationPermission;

import org.hibernate.*;
import org.hibernate.cfg.*;

import com.Sakura.maya.model.Hibernate;

public class HibernateAction {

	//读取hibernate.cfg.xml的配置,加载Hiberna的类库
    Configuration config=new Configuration().configure();
    //根据配置,生成session工厂
    SessionFactory factory= config.buildSessionFactory();
    //用工厂生成session
    Session session =factory.openSession();


	public static void main(String[] args) {

		HibernateAction dl = new HibernateAction();
		dl.SelectAll();
	}

	public void Select(Integer stu_id) {

		// 查询
		Hibernate data = (Hibernate) session.get(Hibernate.class, stu_id);
		System.out.println(data.getStu_id() + data.getStu_name()
				+ data.getStu_sex());


	}

	public void SelectAll() {
		// 查询所有
		String hqlString = "from Hibernate";
		Query query = session.createQuery(hqlString);
		List<Hibernate> list = query.list();
		for (Hibernate ll : list) {
			System.out.print(ll);
		}
		session.close();
	}

	public void Insert() {
		//添加
        //1.造对象
		Hibernate data = new Hibernate();
		data.setStu_id('1');
		data.setStu_name("Sakura");
		data.setStu_sex("men");

        //2.用session.save()保存到数据库了
		try {
			session.beginTransaction();
			session.save(data);
			session.getTransaction().commit();
			System.out.print("添加成功");
		} catch (Exception ex) {
			session.getTransaction().rollback();
		}

		session.close();

	}

	//删除
    
	public void Delete(Integer stu_id) {
		//先查出
		Hibernate data = (Hibernate) session.get(Hibernate.class, stu_id);// get?�load?�可以查
		if (data != null) {
			session.beginTransaction();
			//删除提交数据库
			session.delete(data);
			System.out.print("删除成功");
			session.getTransaction().commit();
		}
		session.close();
		
	}

	public void update(Integer stu_id) {
		//修改
        //1.查
		Hibernate data = (Hibernate) session.load(Hibernate.class, stu_id);

		if (data != null) {
			session.beginTransaction();
			//2.改
			data.setStu_name("Sakura1");
			data.setStu_sex("women");
			//3.提交
			session.update(data);
			session.getTransaction().commit();
		}

		session.close();
		System.out.print("修改成功");
	}

}

OK!就搭建成功了!

在搭建之中遇见的小问题:

 1.显示连接不到数据库

   解决方法:可能是你不是oracle数据库在hibernate.cfg.xml中修改连接方法。

 2.报错:javax/transaction/Synchronization

   解决方法:你需要下载一个jta.jar包

 3.报错:找不到hibernate.cfg.xml文件

   解决方法:缺少jar包或者放的位置不对,放在src
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
外卖订餐系统是一个复杂的软件应用,它通常包含前端用户界面用于浏览菜单、下单、支付等操作,后端则负责处理这些请求并与数据库交互,存储和管理订单信息、用户信息、餐厅信息等数据。系统的核心功能包括用户注册登录、菜品管理、订单创建、状态跟踪等。 在Java中,连接数据库并实现增删改查的操作,主要会用到JDBC(Java Database Connectivity)接口或者更高级的ORM(Object-Relational Mapping)框架如Hibernate或MyBatis。这里简单介绍一下使用JDBC的基本步骤: 1. **连接数据库**: ```java Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); ``` 2. **创建Statement或PreparedStatement**: - Statement用于静态SQL语句,而PreparedStatement用于预编译以防止SQL注入。 ```java Statement stmt = conn.createStatement(); PreparedStatement pstmt = conn.prepareStatement("INSERT INTO orders (user_id, item_id, status) VALUES (?, ?, ?)"); ``` 3. **执行查询(CRUD - Create, Read, Update, Delete)**: - Create: 插入数据 ```java pstmt.setInt(1, userId); pstmt.setInt(2, itemId); pstmt.setString(3, "created"); pstmt.executeUpdate(); ``` - Read: 查询数据 ```java ResultSet rs = pstmt.executeQuery("SELECT * FROM orders WHERE user_id = ?"); while (rs.next()) { String status = rs.getString("status"); } ``` - Update: 更新数据 ```java pstmt.setString(3, "delivered"); pstmt.executeUpdate(); ``` - Delete: 删除数据 ```java pstmt.setInt(1, orderId); pstmt.executeUpdate(); ``` 4. **关闭资源**: ```java rs.close(); pstmt.close(); conn.close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值