【原创】Hibernate自动生成(1)

本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正。 

开发环境: Eclipse Version: Photon Milestone 6

WCP:http://www.wcpdoc.com/home/Pubindex.html

 

目录:

Hibernate自动生成(1)
Hibernate自动生成(2)

动软生成的WCP DAO层模板(不使用接口)

 

 

废话少说,操刀实战:

1.安装JBossTools

默认这样

 

我们只要选Hibernate Tools,第一个自动会选上。

 

点击finish。然后就开始安装。。。

 

 装完重启。

 

2.配置数据库

右键new

 默认

 

 发现没驱动(由于我下载了最新版本的eclipsephoton,最新版本里面没有安装插件)

下载:eclipse插件 

           解压,看到两个目录,这是eclipse的插件,复制到eclipse的相应目录

                   

          mysql驱动     

          解压,需要里面的mysql-connector-java-5.1.46-bin.jar

 

好了,再来:

 

在eclipse目录下,新建一个lib目录,把刚才的jar 包放在里面,然后在这个界面选择这个jar 

 

 

 

 

 数据库连上了!

 

 备注:

后来发现,在这个开源项目里也有可以拷贝到这个mysql的jar包

 

 3.自动生成

 1.新建一个测试的maven项目

点击完成:

 

 

 

 

2. 

 

 

 

 注意: Hibernate Version 选4.3 ,否则后面会报错,看下图:(这个是后面发现错误后,补的说明,非常重要!!)

必须要和你的jar包的版本一致!!

 

 选MySQL

点击OK

 

 

为了测试,先到小海豚里新建个表:

 

 

 

 选上,OK

完成后看到多出一个这个:点击Generation Configurations...

 

 

 

 

 

 

 

  

 

点击run,过了几秒后,报错:

没dom4j的包,那就直接把pom.xml拷贝一份过来咯:(试验结果,还是没有用!!!)

 

但是你得记得,拷贝过去之后,顶上要改下:

 

 

 

 

 

 

之前说到,Hibernate配置里面一定要选4.0版本,由于一开始选了5.0版本上面一致报错。

那就改下:

 

 

 OK,再重复刚才的

 

 点击run

依然报错。。。。怎木办。。。各种百度,谷歌。。终于找到了问题:

https://stackoverflow.com/questions/48253238/org-hibernate-mappingexception-could-not-configure-overrides-from-file-hiberna

 

原来是:http://hibernate.org/dtd

 <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.org/dtd/hibernate-reverse-engineering-3.0.dtd" >

 

 

改成:http://hibernate.sourceforge.net

 <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

 

整个文件是这样的:这里有个坑,如下图:如果不写sql type  那么生成的实体类的类型 将会是 Serializable 类型。这样运行时会报“无法反序列化”的错误。

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" >

<hibernate-reverse-engineering>
 <type-mapping>  
 <sql-type jdbc-type="NVARCHAR" hibernate-type="java.lang.String" />
 <sql-type jdbc-type="NCHAR" hibernate-type="java.lang.String" />
 </type-mapping>
 <table-filter match-catalog="tp_member" match-schema="dbo" match-name="member"/>
</hibernate-reverse-engineering>

 

  

 

 点击Run!成功了!@#¥%……!!!  一万个草泥马跑过。。。

 

参考:Hibernate 零配置之Annotation注解   自动生成的,不需要都选,用注解的话,不需要hbm.xml

 参考:Spring和EJB3的技术对比

 

链接MSSQL

同样,eclipse photon中没有,也从老版本里面拷贝插件,先拷贝一个。其他的不拷。

 

 plugins下面:

           

重启eclipse后好了。

 同上面,稍微截几个屏:

 

 

 

 

 

再建立一个hb的配置文件:

 路径再修正一下

 

 

 

 

点击 run,就报错,和上面一样。改  http://hibernate.sourceforge.net   ,下次试试,先点击apply再close,改完前面这个再run。。每次报错好麻烦。

改完再run一下,生成成功了,WTF!又是报错。大概 应该是刚才选的ejb的注解。因为我没有引用 ejb的包。注释掉就不报错了。

大致上算是成功了。

 

 

去掉后还剩一个错,参考:https://blog.csdn.net/ultrakang/article/details/41820543

 

serialVersionUID 用来表明类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。

 

 关于序列化:为啥要序列化,为啥属性类型是Serializable,可不可以不要?

                   1. hibernate有二级缓存,需要把对象持久化,必须要可序列化。

                   2. mssql 字段类型 为varchar,自动生成的实体对象的属性会变成 Serializable,得把数据库中的字段类型变为char().   

                   参考:关于Hibernate的实体类中为什么要继承Serializable的解答 

                           通过hibernate tool生成实体类时候数据库是nvarchar实体类会字段类型为Serializable

                 怎么办?   

                   有人问了:1.  https://stackoverflow.com/questions/32224054/hibernate-converting-nvarchar-to-serializable-on-creating-pojo-classes-from             

                                     2.   Reverse Engineering with Hibernate Tools in Eclipse Indigo

                                     3. 文档:https://docs.jboss.org/tools/latest/en/hibernatetools/html/reverseengineering.html#type_map

 

 

在hibernate.reveng.xml中加这个,it OK!good~ 

(备注:这个图确有个,见上面有个xml,是我后来补的)

 <type-mapping>  
 <sql-type jdbc-type="NVARCHAR" hibernate-type="java.lang.String" />
 </type-mapping>

 

Pretty Good,aha?

 

                

             

 

 

 

文献参考:

用hibernate tools生成对应的sql应用代码

Eclipse中通过Hibernate Tools插件实现从数据库逆向生成Hibernate带注解的实体类

maven构建hibernate项目及其详解 

B站尚硅谷Hibernate视频

用MyEclipse自动生成hibernate映射文件和实体类

maven构建hibernate项目及其详解

官网下载完全匹配自己Eclipse版本的Hibernate Tools

Hibernate Tools for Eclipse的使用

**hibernate annotation注解方式来处理映射关系

 

转载于:https://www.cnblogs.com/lhuser/p/8961009.html

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值