netbeans hibernate n 1问题逆向工程问题

Documentation
This page was last modified on 6 November 2009, at 18:17.
This page has been accessed 30,895 times.
Not logged in. ,
NetBeans Wiki
By use of this website, you agree to the .
& 2012, Oracle Corporation and/or its affiliates. Sponsored by关于netbeans中的hibernate框架使用【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:714,280贴子:
关于netbeans中的hibernate框架使用收藏
如何在netbeans中创建HibernateSessionFactory类?我现在通过SessionUtil选项来创建 但是创建出来的木完全啊 难道这个需要自己敲代码?? 教材上是myeclipse的因为英语不好
英文界面用的不习惯 想用netbeans来做
软件培训公司,博为峰软件培训免费试听,0元入学,签署就业保障协议,不就业不收费!博为峰,真正的为年轻人服务的企业,14年间培训15万余名软件工程师,成绩斐然!
就这样冷了
登录百度帐号用Netbeans Platform开发RCP经验
最近一个月搞了一下RCP的开发,使用的是Netbeans Platform,在开发的过程中遇到了很多意想不到的问题,于是总结出来与大家共享。
项目的主要内容就是将一个Java SE开发的Application移植到Netbeans Platform平台上面。开发IDE选用Netbeans5.5,平台选择Netbeans6。
在Netbeans网站上面有一个开发CD Player的Demo,它从头开发了一个application配合web service使用,然后将这个application移植到netbeans平台上面,在移植的过程中,由于它的布局非常简单,所以直接就把主要的panel生成swing组件直接放到component里面就可以了,然而如果一个比较大的多页面的项目这么做就有点复杂了,因为初始化的过程是比较复杂的。可以参考Netbeans网站上面关于模块开发中的demo,按照Anagram Game的教程,需要将原application的主类代码重写就可以。所以我建议在开发Application的时候不要把所有的东西都放在一个Frame里面,应该最好是写成Panel,这样既可以在Frame里面嵌入,也可以在Topcomponent里面嵌入。
在从Panel一直到TopComponent的时候,我遇到的最大的问题就是初始化的问题。原application是三个tab页面,现在移植到platform上需要新建三个Window Top Component,每个window放一个tab页。由于原application都会有一个入口,在入口处对程序所需要的资源进行初始化,而移植到platform上面之后,每个Window Top Component初始化的顺序是不确定的,所以需要在每个window中进行资源的初始化,而且还要保证不要影响全局变量。如果把资源的初始化都放在一个window中,那么其他window启动的时候就会出现Nullpoint的异常。
一旦出现空指针的异常,那么程序无法正常运行,而且通过菜单中的build-&stop build/run是不能将正在运行的程序停止的。我们如果再次点击运行,那么就会在屏幕的左上角出现一个只有标题栏的空Frame,这说明我们刚才的程序还没有真正停止。打开进程管理器会看到有两个java.exe进行,其中一个是netbeans启用的java,占用200多M,另外一个就是我们所写的程序启动的java,大概几M到几十M不等。我们只有把这个占用内存相对较少的java.exe手动结束,这时会看到netbeans的output console里面会显示build success,表示程序已经停止。
而且对代码进行修改之后一定要清除并重新编译才可以正常启动,不过在重新编译之前要先按照之前所说的步骤把刚才出错的程序停止运行。停止之后再clean and build all就可以重新编译。如果显示“工程名.xml”出错,那么就去工程所在目录里面,将build目录删除再编译即可。
如果我们已经准备好了相应的panel,那么我们在代码中手动将Panel添加到Window Top Component里面的时候要注意layout。因为Netbeans开发GUI的时候是用matisse采用group layout,而group layout的代码都是自动生成的。如果想在用matisse布局的panel上面添加我们所设计的panel1,使用panel.add(panel1);这样的代码是不行的。运行的时候是根本看不到任何东西的。在写add之前我们需要重新设定panel的布局,所以如果想实现刚才的功能需要写以下代码:
jPanel1.setLayout(new BorderLayout());
jPanel1.add(panel1);
这样再运行就可以看到我们所添加的panel1了。至于group layout等相关布局的内容我没有做相关研究。
在开发插件和开发RCP的过程中,在wizard(向导)中会对所新建的组建进行一些相关参数的设置。例如对Action,TopComponent的名称,位置的设置。那么如果我们以后想改名字和相关的参数怎么办?这些参数都保存在一些xml文件中。新建的Module分类中的类的参数都会保存在Bundle.properties文件中,这个文件与所建立的类在同一个文件夹,例如,打开一个Bundle.properties文件可以看到:
CTL_AboutAction=&About
CTL_NewAction=&New
CTL_SimAppTopComponent=Application Config Window
CTL_SimTopComponent=Grid Config Window
CTL_SimulationTopComponent=Simulation Window
HINT_SimAppTopComponent=This is a Application Configuration window
HINT_SimTopComponent=This is a Grid Configuration window
HINT_SimulationTopComponent=This is a Simulation window
这里面CTL开头的表示这个类在窗口中所显示的名字,例如Action就是在菜单中会显示的名字,TopComponent是窗口组建所显示的标题名字。HINT开头的就是相当于Toolkit hint的功能,当鼠标移动到桌面标题的时候会显示相应的提示信息。我们修改以上参数即可。
整个项目的参数设置都在layer.xml文件中,里面包含了很多很重要的布局信息。通过直接编辑就可以改变很多布局内容,不过如果不熟悉还是不建议去改。不过我们可能会经常需要改变菜单的顺序,这样可以点击工程中的Important Files,第一项就是XML Layer,展开后可以看到有this layer和this layer in context。展开第一个可以看到有Action,Menu和Windows2。在这里可以通过拖拽改变Menu的顺序。
如果我们不想使用platform的原始菜单,那么就需要在project property中的library中的platform6中的Core-UI模块选中,如果不选中则会有最简单的Goto,View和Windows三个菜单,其他的菜单都可以自己去做。一般多窗口的菜单Windows是需要的,如果不想显示Goto和View的话可以在layer.xml中添加以下两行:
&file name="GoTo_hidden"/&
&file name="View_hidden"/&
当然每个TopComponent组件都会有一个相应的xml文件来写明参数,不过这些不需要我们去关心。
NetBeans Platform用起来是非常方便的,很多功能都已经被platform的内置模块所实现,只需要根据自己的需要添加或者删除即可。就好像我们在用MFC开发GUI应用程序的情况类似。我们不需要为各种纷繁复杂的功能去烦心,只需要将精力都放在最重要的部分就好了。事半功倍。
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.036 (s). 12 q(s)这两天在优化人事系统的性能,其中一个工作就是为系统应用Hibernate的缓存。Hibernate有几个缓存:一级缓存、二级缓存、查询缓存。其中我在实现查询缓存的时候出了一些毛病,弄了我两天。
事情是这样的,系统有一大堆代码表,按照一般的原则,代码表当然是缓存起来用。以其中一个表为例:
* 代码抽象类
@MappedSuperclass
public abstract class Code implements Serializable {
  private static final long serialVersionUID = 1853350L;
  protected S
  protected S
  public Code() {
    super();
  @GeneratedValue(strategy=GenerationType.AUTO)
  public long getId() {
  其它getter、setter....
* 工资类别代码
@Table(name="C_SalaryType")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class SalaryType extends Code {
  public SalaryType() {
* 工资级别码
@Table(name="C_SalaryLevel")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class SalaryLevel extends Code {
  public SalaryLevel() {
可以看到我这里的所有代码都继承一个Code的base class。在选择代码缓存类型的时候,考虑到代码不是经常修改,所以选择菲严格读写,即NONSTRICT_READ_WRITE。
(开始的时候,我把“@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)”这句放到Code类里面,发现并不起作用,必须要把它放到具体的类里面才能起作用。不过这是题外话。)
然后重新部署应用,登陆、查看基本信息,问题来了:第二次或者之后查看基本信息,载入需要很长时间,凭感觉比不用缓存的时候还要慢。什么原因呢?查看了一下日志,不看不知道,一看吓一条,系统输出n条下面的sql语句:
Hibernate:
  select
    salarytype0_.id as id77_0_,
    salarytype0_.code as code77_0_,
    salarytype0_.name as name77_0_
  from
    C_SalaryType salarytype0_
  where
    salarytype0_.id in (
      ?, ?, ?, ?, ?, ?, ?, ?
    )
怎么回事?
开始我还以为是查询基本信息表的时候有问题,不过经过查证并且使用调试(netbeans的webapp调试做得还可以)终于查到是查询这个代码表“From SalaryLevel”的时候出事。
我大概数了一下,貌似是使用这种方法重新遍历了一遍alarytype的所有数据,查询缓存不起作用。
不过其它代码类倒是没有这个问题,怎么回事?我认真查了一下代码,发现除了表名、类名不同之外,所有代码的确是一样的,既然一样,何解效果不同呢?
我又尝试改变缓存类型,结果还是一样。怪了,到底怎么回事?
第二天,我还是没有什么头绪,难道是hibernate的bug?不过应该不大可能,其它代码都没什么问题,就几个代码有这种问题。后来突发奇想,打开了org.hibernate.cache包的debug输出(之前是warn输出),输出如下:
junit测试代码是
  public void testGetCodeList() {
    for (int i = 0; i & 2; i++) {
      System.out.println("\n\nTimes: " + (i + 1));
      service.getCodeList(SalaryType.class);
  }
测试结果是
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SimpleContext: bind [java:comp/env/jdbc/hsDB]
SimpleContext: lookup [java:comp/env/jdbc/hsDB]
12:39:03,031 DEBUG org.hibernate.cache.CacheFactory:39 - instantiating cache region: com.dcampus.hr3.domain.code.JobType usage strategy: nonstrict-read-write
12:39:03,031 WARN org.hibernate.cache.EhCacheProvider:86 - Could not find configuration [com.dcampus.hr3.domain.code.JobType]; using defaults.
12:39:03,046 DEBUG org.hibernate.cache.EhCacheProvider:89 - started EHCache region: com.dcampus.hr3.domain.code.JobType
(一大堆重复上面三句)
12:39:05,015 INFO org.hibernate.cache.UpdateTimestampsCache:41 - starting update timestamps cache at region: org.hibernate.cache.UpdateTimestampsCache
12:39:05,015 WARN org.hibernate.cache.EhCacheProvider:86 - Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.
12:39:05,015 DEBUG org.hibernate.cache.EhCacheProvider:89 - started EHCache region: org.hibernate.cache.UpdateTimestampsCache
12:39:05,031 INFO org.hibernate.cache.StandardQueryCache:52 - starting query cache at region: org.hibernate.cache.StandardQueryCache
12:39:05,031 WARN org.hibernate.cache.EhCacheProvider:86 - Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.
12:39:05,031 DEBUG org.hibernate.cache.EhCacheProvider:89 - started EHCache region: org.hibernate.cache.StandardQueryCache
Times: 1
12:39:05,781 DEBUG org.hibernate.cache.StandardQueryCache:102 - checking cached query results in region: org.hibernate.cache.StandardQueryCache
12:39:05,781 DEBUG org.hibernate.cache.EhCache:68 - key: sql: select salarytype0_.id as id77_, salarytype0_.code as code77_, salarytype0_.name as name77_ from C_SalaryType salarytype0_; parameters: ; named parameters: {}
12:39:05,781 DEBUG org.hibernate.cache.EhCache:77 - Element for sql: select salarytype0_.id as id77_, salarytype0_.code as code77_, salarytype0_.name as name77_ from C_SalaryType salarytype0_; parameters: ; named parameters: {} is null
12:39:05,781 DEBUG org.hibernate.cache.StandardQueryCache:107 - query results were not found in cache
Hibernate:
  select
    salarytype0_.id as id77_,
    salarytype0_.code as code77_,
    salarytype0_.name as name77_
  from
    C_SalaryType salarytype0_
12:39:06,015 DEBUG org.hibernate.cache.NonstrictReadWriteCache:71 - Caching: com.dcampus.hr3.domain.code.SalaryType#1
12:39:06,015 DEBUG org.hibernate.cache.NonstrictReadWriteCache:71 - Caching: com.dcampus.hr3.domain.code.SalaryType#2
12:39:06,015 DEBUG org.hibernate.cache.NonstrictReadWriteCache:71 - Caching: com.dcampus.hr3.domain.code.SalaryType#3
(重复至1546)
12:39:07,312 DEBUG org.hibernate.cache.StandardQueryCache:73 - caching query results in region: org.hibernate.cache.StandardQueryC timestamp=2464
Times: 2
12:39:07,328 DEBUG org.hibernate.cache.StandardQueryCache:102 - checking cached query results in region: org.hibernate.cache.StandardQueryCache
12:39:07,328 DEBUG org.hibernate.cache.EhCache:68 - key: sql: select salarytype0_.id as id77_, salarytype0_.code as code77_, salarytype0_.name as name77_ from C_SalaryType salarytype0_; parameters: ; named parameters: {}
12:39:07,328 DEBUG org.hibernate.cache.StandardQueryCache:156 - Checking query spaces for up-to-dateness: [C_SalaryType]
12:39:07,328 DEBUG org.hibernate.cache.EhCache:68 - key: C_SalaryType
12:39:07,328 DEBUG org.hibernate.cache.EhCache:77 - Element for C_SalaryType is null
12:39:07,328 DEBUG org.hibernate.cache.StandardQueryCache:117 - returning cached query results
12:39:07,343 DEBUG org.hibernate.cache.NonstrictReadWriteCache:41 - Cache lookup: com.dcampus.hr3.domain.code.SalaryType#1
12:39:07,343 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#1
12:39:07,343 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#1 is null
12:39:07,343 DEBUG org.hibernate.cache.NonstrictReadWriteCache:49 - Cache miss
12:39:07,343 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#2
12:39:07,343 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#2 is null
12:39:07,343 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#3
12:39:07,343 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#3 is null
12:39:07,343 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#4
12:39:07,343 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#4 is null
12:39:07,343 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#5
12:39:07,343 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#5 is null
12:39:07,359 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#6
12:39:07,359 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#6 is null
12:39:07,359 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#7
12:39:07,359 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#7 is null
12:39:07,359 DEBUG org.hibernate.cache.EhCache:68 - key: com.dcampus.hr3.domain.code.SalaryType#8
12:39:07,359 DEBUG org.hibernate.cache.EhCache:77 - Element for com.dcampus.hr3.domain.code.SalaryType#8 is null
Hibernate:
  select
    salarytype0_.id as id77_0_,
    salarytype0_.code as code77_0_,
    salarytype0_.name as name77_0_
  from
    C_SalaryType salarytype0_
  where
    salarytype0_.id in (
      ?, ?, ?, ?, ?, ?, ?, ?
    )
(重复上面Time2后面的内容至1546)
////////////////////// end ////////////////////////////////////////////////////////////////////
从上面可以看到,原来是每次查询都不能击中缓存。怎么会击不中?我看到1546,突然想起我的ehcache的配置是默认1000个
  &defaultCache
      maxElementsInMemory="1000"
      timeToIdleSeconds="600"
      timeToLiveSeconds="1800"
      eternal="false"
      overflowToDisk="false"
      diskPersistent="false"
      memoryStoreEvictionPolicy="LRU"
      /&
&/ehcache&
而那些代码的数目超过一千个,所以每次查询都不能命中。把1000改为10000,测试通过。
论坛回复 /
(0 / 3703)
liangguanhui
浏览: 90760 次
作者您好,你的程序java版在linux下可以使用,但没有排序 ...
public boolean processSocket( ...
lijjjjil 写道有问题吧?
read uncommit ...
read uncommitted咋可能不变呢?你 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'极品小肥羊
netbeans 的通过数据库生成hbm映射文件与pojo实体类稍有问题
我在数据库中建了一个名为apigbig的schema,然后通过数据库生成hbm、pojo,结果生成的映射文件
是Apigbig.hbm.xml,而pojo类名Apigbig.java,但是我想要的名字是APigBig,于是我就把前述二者
重构,重命名为APigBig,注意:我在重构后核查了映射文件、配置文件中的实体类路径是否与实体
类APigBig一致,发现已经一致了。
然后我测试了一下,发现提示Initial SessionFactory creation
failed.org.hibernate.MappingException: entity class not found: x.APigBig
其中x是我的包名。
我检查了很久,认为不应该有问题。
于是我重新新建了一个项目,这次,我不使用 通过数据库生成映射文件与pojo,而是直接将刚才那
个项目的相应hibernate.cfg.xml、pojo实体类、hbm.xml移过去。然后再进行测试。
居然正常了! = =!
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 hibernate乱码问题 的文章

 

随机推荐