ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-09-22

2021-09-22 23:59:34  阅读:186  来源: 互联网

标签:hibernate 22 09 list Hibernate 2021 Authors import public


Hibernate实现增改删查

文章目录


前言

Hibernate作为轻量级框架可自动在数据库生成表

一、什么是Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JavaEE架构中取代CMP,完成数据持久化的重任。

二、创建Hibernate步骤

1.创建空Java项目

导入hibernate包

项目结构如下:
在这里插入图片描述

2.在src中创建hibernate.cfg.xml

右击src选择新建,选择其他,输入hibernate,点击带有cfg.xml的文件,点击完成
在这里插入图片描述

3.修改cfg文件

hibenate.cfg.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">root</property>
        
        <!-- jdbc:mysql://localhost:端口号/数据库名 -->
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mycsdb</property>
        
        <property name="hibernate.connection.username">root</property>
        
        <!-- MySQL5InnoDB为数据库方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    
    	<property name="hibernate.show_sql">true</property>
    
    
    	<property name="hibernate.hbm2ddl.auto">update</property>
    	
    	<mapping resource="pojo/Authors.hbm.xml"/>
    	<mapping class="pojo.Books"/>
    </session-factory>
</hibernate-configuration>


4.在src中创建pojo包

创建两个java类:

Authors.java类:

package pojo;

import java.util.ArrayList;
import java.util.List;

public class Authors {
	//write
	//pojo中需要写属性,getter和setter toString()都可以自己生成
	private int authorid;
	private String authorname;
	private List<Books> list = new ArrayList();
	
	public Authors() {}
	
	//auto
	public Authors(int authorid, String authorname, List<Books> list) {
		super();
		this.authorid = authorid;
		this.authorname = authorname;
		this.list = list;
	}
	
	public List<Books> getList() {
		return list;
	}
	public void setList(List<Books> list) {
		this.list = list;
	}
	public int getAuthorid() {
		return authorid;
	}
	public void setAuthorid(int authorid) {
		this.authorid = authorid;
	}
	public String getAuthorname() {
		return authorname;
	}
	public void setAuthorname(String authorname) {
		this.authorname = authorname;
	}

	@Override
	public String toString() {
		return "Authors [authorid=" + authorid + ", authorname=" + authorname + ", list=" + list + "]";
	}
	
	
	
}

Books.java类:

package pojo;

public class Books {

	private int bookid;
	private String bookname;
	
	public Books() {};
	
	public Books(int bookid,String boookame){
		super();
		this.bookid = bookid;
		this.bookname = bookname;
	}

	public int getBookid() {
		return bookid;
	}

	public void setBookid(int bookid) {
		this.bookid = bookid;
	}

	public String getBookname() {
		return bookname;
	}

	public void setBookname(String bookname) {
		this.bookname = bookname;
	}

	@Override
	public String toString() {
		return "Books [bookid=" + bookid + ", bookname=" + bookname + "]";
	}
	
	
}

5.HibernateList

在src中创建test包,在包中创建TestList类:

package test;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import pojo.Authors;
import pojo.Books;
import util.HibernateUtil;

public class TestList {
	@Test
	public void testOne() {
		//1.获取会话Session
		Session session = HibernateUtil.getSessionFactory().openSession();
//		Session session1 = HibernateUtil.getSession();
		//2.开启事务
		Transaction tx = session.beginTransaction();
		//3.添加数据
		Books book1 = new Books();//
		book1.setBookname("白夜行");
		book1.setBookid(1);
		Books book2 = new Books();
		book2.setBookname("解忧杂货店");
		book2.setBookid(2);
		Authors author = new Authors();//一
		author.setAuthorname("东野圭吾");
		//4.关联
		author.getList().add(book1);
		author.getList().add(book2);
		//5.保存数据
		session.save(author);
		session.save(book1);
		session.save(book2);
		//6.事务提交
		tx.commit();
		//7.关闭资源
		session.close();
	}
	
	@Test
	public void testQuery() {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Query query = session.createQuery("From pojo.Authors");
		List list = query.list();
		for(Iterator itr = list.iterator();itr.hasNext();) {
			Authors a = (Authors) itr.next();
			//借助pojo中的toString()方法打印内容
			System.out.print(a.toString());
		}
	}
}

6.写工具类

在src中创建util类,创建HibernateUtil工具类:

package util;

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

public class HibernateUtil {
	static SessionFactory sf;
	static {
		sf = new Configuration().configure()
				.buildSessionFactory();
	}
	
	public static SessionFactory getSessionFactory() {
		return sf;
	}
	
	public static Session getSession() {
		return sf.openSession();
	}
}

7.生成hbm文件并且配置

将Authors和Books合并:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2021-9-22 21:47:19 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
    <class name="pojo.Authors" table="AUTHORS">
        <id name="authorid" type="int">
            <column name="AUTHORID" />
            <generator class="assigned" />
        </id>
        <property name="authorname" type="java.lang.String">
            <column name="AUTHORNAME" />
        </property>
        
        
        <list name="list" cascade="all">
            <key column="AUTHORID"/>
            
               
          
            <list-index column="BOOKID"></list-index>
            
            <one-to-many class="pojo.Books" />
        </list>
    </class>
    
    <class name ="pojo.Books" table= "BOOKS">
    	<<id name="bookid" type ="int">
    		<column name ="BOOKID"/>
    		<generator class="assigned"/>
    	</id>
    <property name="bookname" type="java.lang.String">
    	<column name="BOOKNAME"></column>
    </property>
    
    
    </class>
    
    
</hibernate-mapping>

测试

打开Navicat查看表:
在这里插入图片描述

总结

以上是Hibernate自动向数据库插入数据,如有错误请改正。

标签:hibernate,22,09,list,Hibernate,2021,Authors,import,public
来源: https://blog.csdn.net/weixin_42620428/article/details/120425014

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有