Hibernate环境搭建
发布日期:2021-06-29 15:01:44 浏览次数:2 分类:技术文章

本文共 6913 字,大约阅读时间需要 23 分钟。

Hibernate环境搭建

一、新建动态web工程

在这里插入图片描述

二、新建lib文件夹。引入jar

相关jar下载

在这里插入图片描述

三、引入jar

右键所有jar—Build Path ---- add
在这里插入图片描述

四、在src下新建配置文件hibernate.cfg.xml

com.mysql.jdbc.Driver
jdbc:mysql:///hibernate
root
root
org.hibernate.dialect.MySQLDialect
true
true
update
org.hibernate.connection.C3P0ConnectionProvider
5
20
120
3000
4
thread

五、在src下新建配置文件log4j.properties

### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.errlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{
ABSOLUTE} %5p %c{
1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c\:mylog.loglog4j.appender.file.layout=org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern=%d{
ABSOLUTE} %5p %c{
1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' #### error warn info debug tracelog4j.rootLogger= info, stdout

六、建立目录结构和工具类

在这里插入图片描述

HibernateUtils

package com.itzheng.hibernate.utils;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;/*Hibernate的工具类做hibernate的小练习,对configuration的configure()方法很好奇,为啥创建的对象还要执行这个方法呢。Configuration cfg = new Configuration().configure();原来configure()方法默认会在classpath下面寻找hibernate.cfg.xml文件,如果没有找到该文件,系统会打印如下信息并抛出HibernateException异常。其实不使用configure()方法也可以Configuration cfg = new Configuration();这时hibernate会在classpath下面寻找hibernate.properties文件,如果没有找到该文件,系统会打印如下信息并抛出HibernateException异常。 */public class HibernateUtils {
public static final Configuration cfg; public static final SessionFactory sf; static {
cfg = new Configuration().configure();// 获取与数据库的链接的配置文件 sf = cfg.buildSessionFactory();//开启事务建立与数据库之间的链接 } public static Session openSession() {
return sf.openSession(); } public static Session getCurrentSession() {
return sf.getCurrentSession(); }}

七、建立数据库

在这里插入图片描述

表可以在hibernate里面配置好自动创建

八、创建domian包,以及测试类

在这里插入图片描述

在这里插入图片描述
创建测试类及其对应的配置文件
Customer

package com.itzheng.hibernate.domain;import java.util.HashSet;import java.util.Set;/* * 客户的实体 */public class Customer {
private Long cust_id; private String cust_name; private String cust_source; private String cust_industry; private String cust_level; private String cust_phone; private String cust_mobile; // 一个客户有多个联系人 // 通过ORM的方式表示:一个客户对应多个联系人。 // 放置的是多的一方的集合。Hibernate默认使用的是Set集合。 private Set
linkMans = new HashSet
(); public Long getCus_id() {
return cust_id; } public void setCust_id(Long cust_id) {
this.cust_id = cust_id; } public String getCust_name() {
return cust_name; } public void setCust_name(String cust_name) {
this.cust_name = cust_name; } public String getCust_source() {
return cust_source; } public void setCust_source(String cust_source) {
this.cust_source = cust_source; } public String getCust_industry() {
return cust_industry; } public void setCust_industry(String cust_industry) {
this.cust_industry = cust_industry; } public String getCust_level() {
return cust_level; } public void setCust_level(String cust_level) {
this.cust_level = cust_level; } public String getCust_phone() {
return cust_phone; } public void setCust_phone(String cust_phone) {
this.cust_phone = cust_phone; } public String getCust_mobile() {
return cust_mobile; } public void setCust_mobile(String cust_mobile) {
this.cust_mobile = cust_mobile; } public Set
getLinkMans() {
return linkMans; } public void setLinkMans(Set
linkMans) {
this.linkMans = linkMans; }}

Customer.hbm.xml

LinkMan

package com.itzheng.hibernate.domain;/* * 联系人的实体 * CREATE TABLE `cst_linkman` (  `lkm_id` BIGINT(32) NOT NULL AUTO_INCREMENT COMMENT '联系人编号(主键)',  `lkm_name` VARCHAR(16) DEFAULT NULL COMMENT '联系人姓名',  `lkm_cust_id` BIGINT(32) DEFAULT NULL COMMENT '客户id',  `lkm_gender` CHAR(1) DEFAULT NULL COMMENT '联系人性别',  `lkm_phone` VARCHAR(16) DEFAULT NULL COMMENT '联系人办公电话',  `lkm_mobile` VARCHAR(16) DEFAULT NULL COMMENT '联系人手机',  `lkm_email` VARCHAR(64) DEFAULT NULL COMMENT '联系人邮箱',  `lkm_qq` VARCHAR(16) DEFAULT NULL COMMENT '联系人qq',  `lkm_position` VARCHAR(16) DEFAULT NULL COMMENT '联系人职位',  `lkm_memo` VARCHAR(512) DEFAULT NULL COMMENT '联系人备注',  PRIMARY KEY (`lkm_id`),  KEY `FK_cst_linkman_lkm_cust_id` (`lkm_cust_id`),  CONSTRAINT `FK_cst_linkman_lkm_cust_id` FOREIGN KEY (`lkm_cust_id`) REFERENCES `cst_customer` (`cust_id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; *  */public class LinkMan {
private Long lkm_id; private String lkm_name; private String lkm_gender; private String lkm_phone; private String lkm_mobile; private String lkm_email; private String lkm_qq; private String lkm_position; private String lkm_memo; //一个客户有多个联系人 //一个联系人属于一个客户 //通过ORM方式表示,一个联系人只能属于某一个客户 //放置的是一的一方的对象。 private Customer customer; public Long getLkm_id() {
return lkm_id; } public void setLkm_id(Long lkm_id) {
this.lkm_id = lkm_id; } public String getLkm_name() {
return lkm_name; } public void setLkm_name(String lkm_name) {
this.lkm_name = lkm_name; } public String getLkm_gender() {
return lkm_gender; } public void setLkm_gender(String lkm_gender) {
this.lkm_gender = lkm_gender; } public String getLkm_phone() {
return lkm_phone; } public void setLkm_phone(String lkm_phone) {
this.lkm_phone = lkm_phone; } public String getLkm_mobile() {
return lkm_mobile; } public void setLkm_mobile(String lkm_mobile) {
this.lkm_mobile = lkm_mobile; } public String getLkm_email() {
return lkm_email; } public void setLkm_email(String lkm_email) {
this.lkm_email = lkm_email; } public String getLkm_qq() {
return lkm_qq; } public void setLkm_qq(String lkm_qq) {
this.lkm_qq = lkm_qq; } public String getLkm_position() {
return lkm_position; } public void setLkm_position(String lkm_position) {
this.lkm_position = lkm_position; } public String getLkm_memo() {
return lkm_memo; } public void setLkm_memo(String lkm_memo) {
this.lkm_memo = lkm_memo; } public Customer getCustomer() {
return customer; } public void setCustomer(Customer customer) {
this.customer = customer; }}

LinkMan.hbm.xml

转载地址:https://code100.blog.csdn.net/article/details/106242492 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Hibernate的抓取策略---Hibernate查询方式的优化 延迟加载 + 抓取策略
下一篇:Hibernate的查询方式(大全)(检索方式)OID查询+ HQL检索 +QBC检索+SQL检索

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月09日 03时39分40秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

编写 if 时不带 else,你的代码会更好! 2019-04-29
字节跳动总结的设计模式 PDF 火了,完整版开放下载! 2019-04-29
新款 iPad 写代码 真香,包邮送一个! 2019-04-29
7年,从“游戏少年”到大厂技术总监的逆袭之路 2019-04-29
超级全面的 SpringBoot 注解介绍,每一个用途都应该清晰 2019-04-29
排名前 16 的 Java 工具类,哪个你没用过? 2019-04-29
图解计算机结构与体系分类!! 2019-04-29
别人家的团队怎么用RabbitMQ:我总结的5点规范 2019-04-29
用动图讲解分布式 Raft 2019-04-29
阿里某P5程序员求助:跟女票要结婚,她家要50万彩礼,女票爸爸说钱不够可以先欠着,这婚能结吗?欠条以后能赖吗?... 2019-04-29
再爆安全漏洞,这次轮到Jackson了,竟由阿里云上报 2019-04-29
百度信息流和搜索业务中的弹性近线计算探索与应用 2019-04-29
RabbitMQ 高频考点 2019-04-29
某程序员爆料:今年滴滴全员发1200元红包,包括保洁人员,过年不回家还有666元留守红包,良心企业!... 2019-04-29
编程高手是如何练成的? 2019-04-29
同时拿到BATJMD的Offer是怎样的一种体验? 2019-04-29
CPU深夜狂飙,一帮大佬都傻眼了... 2019-04-29
阿里一面:如何保证API接口数据安全? 2019-04-29
某面试官吐槽:面试某大龄程序员,问HTTPS的加密过程,对方却答不出来!网友:这个问题毫无意义!... 2019-04-29
2W 字详解 Redis 6.0 集群环境搭建实践 2019-04-29