Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Hibernate OR EclipseLink...Which is best with Weblogic and Oracle DB?

824749Dec 17 2010 — edited Dec 17 2010
Hi All,

In my company, we are using Oracle DB and Weblogic application server. So in the process to upgrade or switch to new ORM, we shortlisted two options - Hibernate and EclipseLink.

I gathered following summary regarding both ORMs -

Hibernate:

1. When you need to train people, like we are going to do next week – most of the companies have Hibernate experts.
2. When you hire new developers, most of them come with specific Hibernate experience.
3. When you need to consult with experts, both in the internet or consultants, you have LOTS of options. Endless forums and communities all regarding Hibernate.
4. Hibernate is an open source which has a huge community. This means that it will be improved all the time and will push the ORM market forward.
5. Hibernate is an open source which means you have the code to handle, and in case needed, fit it to your needs.
6. There are lots of plugins to Hibernate, such as validations tool, audit tools, etc. These becomes standard as well and dismiss you from impl. things yourself.
7. One most important thing with ORM tool, is to configure it according to your application’s needs. Usually the default setting doesn’t fit to your needs.
For that sake, when the market has a huge experience with the tool’s configuration, and lots of experts (see point 1 and 3) – most of chances you will find similar cases and
lots of knowledge about how to configure the tool and thus – your application.

EclipseLink:

1. Fully supported by Oracle. Hibernate no. In case of pb, it could be cumbersome to prove that it is a pure Weblogic one. Concretely, we will have to prove it (waste of time and complexity).
2. Eclipse link is developed by Oracle and the preferred ORM in the Weblogic /Oracle DB world.
3. Even if at a certain time EclipseLink was a bit late compared to Hibernate (feature), EclipseLink evolved very fast and we can consider now that they close the gap.
4. No additional fee as soon as you have Weblogic license. You will need to pays additional fee if you want some professional support on Hibernate.
5. We are currently relying on Hibernate for our legacy offer and are facing pb in second level cache (JGroups). Today, we are riding off this part!. Consequences are limitation in clustering approach (perf)
6. On EclipseLink side we do succeed to manage first and second level cache in a clustering approach.
7. Indeed Hibernate is open source, so you can imagine handling it. In reality, the code is so complex that it is nearly impossible to modify it. Moreover as it is LGPL, you need to feedback all the modified sources to the community systematically.
8. All tests performed by Oracle concerning Weblogic are using EclipseLink. Moreover, Oracle says that some specific optimizations are done to manage Oracle DB.
9. Hibernate comes from JBoss community.


Right now we are preferring Hibernate but there are concerns/reasons like EclipseLink developed by Oracle and preferred ORM in Webogic/ Oracle DB world (compatibility of ORM with DB and App. server), support comparison with both ORM, which are preventing to finalize the decision.

Please help me with you views and opinions and share you experience with us so that we can make a perfect decision.

If you want you can also reply to me @ yogesh.golande@gmail.com.

Thanks.

Comments

Franck N

user2003324 schrieb:

Apex Version: 5.1.3

Issue:

When entering Page 2 from Page 1, I want the active tab to always be Tab A. When returning FROM Page 3 or Page 4 to Page 2, I want the active tab to be remembered from the calling sub-region.

I haven’t been able to figure out any way to make this work.

Thanks for your help.

you can use Jquerry to dynamically select a Tab like bellow:

$("#tabID_tab a").trigger("click");

now the question is how are you navigating from page to page? using Branching or redirect To? or somethinhg else?

according to what you are using you should have an hidden Item on the affected page where you will set a value to identify from which page you are coming from or returning from.

then have a DA on page load of type JS.

var val =apex.item('P2_PAGENUMBER').getValue();

if(val ===2){

$("#tabAID_tab a").trigger("click");

}

you could upload your app online and we could have a look into it.

regards,

Franck

John Snyders-Oracle

Hi,

This question (how to activate a tab) comes up often. It is reasonable to expect to be able to do these things with an API and/or a built in DA action.

It is fine to trigger a click event but it is always a last resort. It is an indication that something is wrong. Either a flaw in the design or missing functionality of the thing you are trying to control or a lack of knowledge about that thing. In this case it is the APEX aTabs widget which is undocumented.

First give the tabs or RDS region a static id and give each of the tab regions a static id as well.

For RDS then you can activate a tab with code such as:

$("#staticIdOfTabsOrRDSRegion .a-Tabs").aTabs("getTabs")["#staticIdOfTabYouWantToActivate"].makeActive();

Tabs Container region template uses a different prefix for the tab regions:

$("#staticIdOfTabsOrRDSRegion .a-Tabs").aTabs("getTabs")["#SR_staticIdOfTabYouWantToActivate"].makeActive();

Regards,
-John

user2003324

Thanks all for your suggestions.

John,

  I gave my tab region the static id of 100.

  I gave the first tab the static id of 120.

  I gave the second tab the static id of 140.

For the sake of testing, let's say I want the second tab to be the active tab when page load.  On the page I added the JS (under execute when page loads)  the following:  

$("#100.a-Tabs").aTabs("getTabs")["#SR_140"].makeActive();

What am I missing?

Thanks for your help.

Vicky

John Snyders-Oracle

Hi Vicky,

Static IDs are usually names not numbers. That probably isn't the problem. It is a good idea to stick with valid values for DOM id attributes.

I think the error is that there should be a space between the #100 and .a-Tabs. You are looking for the .a-Tabs element below the #100 element.

Regards,

-John

user2003324

Tab Regions static ID:  dxTabReg

Tab 1 static ID:  Agent

Tab 2 static ID:  Response

js:  $("#dxTabReg .a-Tabs").aTabs("getTabs")["#SR_Response"].makeActive();

Page Mode:  Modal Dialog (if this makes a difference)

Gor_Mahia

hI,

Did you manage to get this resolved?  Iam trying to dynamically change active Tab based based on the selected value from Select List

Value = 1 > Tab#1 is active,

Value = 2 > Tab#2 is active

thanks.

Gor_Mahia

hi John,

i need your help on this piece ...

Issue description:

-   I am trying to dynamically change active Tab based based on the selected value from Select List

Value = 1 > Tab#1 is active,

Value = 2 > Tab#2 is active

My code in dynamioc action is like:

- $('ul[id$="_RDS"] > li:nth-child(2) a').aTabs("getTabs")["#CLOSE_TAB_tab"].makeActive();

but iam getting this error below:

Uncaught Error: cannot call methods on aTabs prior to initialization; attempted to call method 'getTabs'

    at Function.error (jquery-2.2.3.min.js?v=5.1.1.00.08:2)

    at HTMLAnchorElement.<anonymous> (desktop.min.js?v=5.1.1.00.08:25)

    at Function.each (jquery-2.2.3.min.js?v=5.1.1.00.08:2)

    at a.fn.init.each (jquery-2.2.3.min.js?v=5.1.1.00.08:2)

    at a.fn.init.e.fn.(:8080/apex/apextdstst/anonymous function) [as aTabs] (http://clapxd01.nycha.nyc.gov:8080/i/libraries/apex/minified/desktop.min.js?v=5.1.1.00.08:25:5901)

    at Object.javascriptFunction (f?p=700:3:9459197085554::::::612)

    at Object.da.doAction (desktop.min.js?v=5.1.1.00.08:18)

    at Object.da.doActions (desktop.min.js?v=5.1.1.00.08:18)

    at HTMLDocument.<anonymous> (desktop.min.js?v=5.1.1.00.08:18)

    at Function.each (jquery-2.2.3.min.js?v=5.1.1.00.08:2)

what could be the issue here?

thanks.

m.ogun

Thanks John, it helped a lot.
One minor addition: in my case putting this DA on Page Load was not enough.
I mean, your JS was doing its job and set active tab but afterwards 1st tab selected back as default. (no, remember last active tab is set to off)
I tested it with some other event points such as on Click, Scroll etc. and it works.
this is an acceptable solution for my case :)

thank you very much.

John Snyders-Oracle

Sometimes it can be tricky to get the timing right on page load. Many things are being initialized and your code needs to run at just the right moment.
In some cases wrapping your code in setTimeout or $() ready function can help. Examples:

setTimeout( function() {
   your code here
}, 0);

or
$(function() {
   your code here
});

Look at the page source and set breakpoints and/or add console.log to understand the timing, put the page in debug mode if needed.

1 - 10
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Jan 14 2011
Added on Dec 17 2010
1 comment
1,014 views