• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Converting to hibernate with jpa

 
Ranch Hand
Posts: 417
  • Number of slices to send:
    Optional 'thank-you' note:
I'm looking forward to use Hibernate with JPA in an existing code (not written by me) just like it's described in this tutorial :
https://howtodoinjava.com/jpa/spring-hibernate-jpa-configuration-example/

Here's how my testapp-servlet.xml looks like:



When I tried to use some of the configurations from the above document's servlet.xml, I am running into some issues.

When I first tried replacing  <context:annotation-config /> with <context:component-scan base-package="cdc.company" />, I ran into following issue:



So I decided to put <context:annotation-config /> back to avoid above error.

And then since the documentation has this part:



I am wondering how to handle this since my servlet doesn't contain this part. Also my dbms is MSSQL and not MSQL5. I have a separate applicationContext-hibernate.xml and that's where I see dataSource created stuff seems to be defined so I was wondering if I could just use it in servet.xml just like above documentation folks have done but not sure how to proceed.
 
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
Hmmm. I'll try and chew into this. Hopefully I won't mess it up too badly.

However, first: standard disclaimer. I see you have a "LoginController". That indicates that you probably have a user-defined login/security system. Those things are serious security risks. The crackability rate is something like 95%. I recommend that you either use JEE standard container security or Spring Security. If you are using Spring Security, don't mind me. It's a little difficult for me to tell here.

Now for the JPA. An important thing to note is that JPA is a subset of the JEE Enterprise JavaBeans standard beginning with EJB3. As such, you have to be aware that how you wire it up depends on what webapp server you use. A full-stack JEE server such as WebLogic, WebSphere or Wildfly has EJB3 built into it, and that includes the EntityManager factory. On the other hand, limited servers like Tomcat and jetty do not. That includes cases where they are the internal webapp server for Spring Boot apps. TomEE is a special bundling of Tomcat that integrates full-stack services (including EJB3) into Tomcat. It has its fans,, but it's comparatively rate.

The upshot to that is that the limited-stack servers require JPA implementation JARs to be included in the WARs that use them. There are several JPA implementations besides Hibernate JPA, including Apache OpenJPA. They're mostly plug-replaceable, since all JPA implementations must conform to the JEE JPA standard.

Contrariwise, if you use JPA in a full-stack server's webapp, you should NOT include JPA implementation JARs in your WAR. If you do, they'll get into fights with JPA classes that are built into the webapp server.

One thing that also sticks out is that apparently your Spring configuration file is named testapp-servlet.xml. My exact memory of Spring Web details, like all my other memories is rapidly rotting, but I don't think that that's where you should be putting all your Spring definitions. I normally have my master definitions, including the JPA config stuff, in a /WEB-INF/classes/application.xml file. The "xxx-servlet.xml" file(s) would configure individual Spring web servlets, as I fuzzily recall.

You say you are "converting" to Hibernate JPA, which implies that you had some existing app. If so, what did it use as its persistence mechanism?

 
Bartender
Posts: 2436
13
  • Number of slices to send:
    Optional 'thank-you' note:
I think Spring Boot with Spring Data JPA are the good options to use.
 
Tim Holloway
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:

Himai Minh wrote:I think Spring Boot with Spring Data JPA are the good options to use.


I forbore mentioning that because if there was an existing application, Spring Boot would mean replacing, rather than upgrading the app.

But Spring Boot does solve a lot of problems, since its app generator automatically builds and configures the necessary infrastructure.
 
Jack Tauson
Ranch Hand
Posts: 417
  • Number of slices to send:
    Optional 'thank-you' note:

Tim Holloway wrote:Hmmm. I'll try and chew into this. Hopefully I won't mess it up too badly.

However, first: standard disclaimer. I see you have a "LoginController". That indicates that you probably have a user-defined login/security system. Those things are serious security risks. The crackability rate is something like 95%. I recommend that you either use JEE standard container security or Spring Security. If you are using Spring Security, don't mind me. It's a little difficult for me to tell here.

Now for the JPA. An important thing to note is that JPA is a subset of the JEE Enterprise JavaBeans standard beginning with EJB3. As such, you have to be aware that how you wire it up depends on what webapp server you use. A full-stack JEE server such as WebLogic, WebSphere or Wildfly has EJB3 built into it, and that includes the EntityManager factory. On the other hand, limited servers like Tomcat and jetty do not. That includes cases where they are the internal webapp server for Spring Boot apps. TomEE is a special bundling of Tomcat that integrates full-stack services (including EJB3) into Tomcat. It has its fans,, but it's comparatively rate.

The upshot to that is that the limited-stack servers require JPA implementation JARs to be included in the WARs that use them. There are several JPA implementations besides Hibernate JPA, including Apache OpenJPA. They're mostly plug-replaceable, since all JPA implementations must conform to the JEE JPA standard.

Contrariwise, if you use JPA in a full-stack server's webapp, you should NOT include JPA implementation JARs in your WAR. If you do, they'll get into fights with JPA classes that are built into the webapp server.

One thing that also sticks out is that apparently your Spring configuration file is named testapp-servlet.xml. My exact memory of Spring Web details, like all my other memories is rapidly rotting, but I don't think that that's where you should be putting all your Spring definitions. I normally have my master definitions, including the JPA config stuff, in a /WEB-INF/classes/application.xml file. The "xxx-servlet.xml" file(s) would configure individual Spring web servlets, as I fuzzily recall.

You say you are "converting" to Hibernate JPA, which implies that you had some existing app. If so, what did it use as its persistence mechanism?



Thanks. I have postponed my plan on converting this as it's taking lot of time. Currently it's using spring-jdbc and Hibernate with hbm.xml mapping.
 
Tim Holloway
Saloon Keeper
Posts: 27871
196
  • Number of slices to send:
    Optional 'thank-you' note:
I would have thought that Hibernate and Spring-JDBC wouldn't be able to act as a unit. Granted, I never attempted legacy (HBM) Hibernate with Spring, but I though Spring JDBC was strictly raw JDBC, not ORM-based JDBC.  
 
Don't get me started about those stupid light bulbs.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |