Urgent!Poor performance in Entity beans

we're using Weblogic 5.1, Oracle 8i.(both installed in Solaris 5.8) We
found that the performance of our entity beans is poor, the reason we
guess is because when we issue a select statement, the jdbc, at the same
time, issue a update statement, that's why the response time is slow.
(By the way,we use oracle thin driver to connect.)
I know we can set autocommit to false but our beans are cmp,so we can't
set properties in connection pool.What can we do then?Can we set any
transaction attributes in our ejb,so we can solve our problem?
Thx!
Pete

A few issues with the linked article:
" 1. Where ever possible, using Entity bean with CMP over Entity bean with BMP, will ensure increase in performance... Tuned CMP entity beans offer better performance than BMP entity beans."
Bull. Every time I have seen some statement like the above it has never contained any associated proof nor explaination of how a container vendor's code can interact with a DB any better than mine.
The only means by which a container vendor can generically improve the performance of DB interactivity is to not do it, namely by caching the data and monitoring modification. This is rarely used due to mitigating factors such as any case where the container does not have sole access and omniscience over the DB.
"Moving towards the CMP based approach provides database independence since it does not contain any database storage APIs within it."
Ahh yes, lets trade in EJB container independence for database independence. It's interesting that the biggest proponents of CMP (and the ones who pushed it into the spec) are the biggest container vendors. Database storage APIs??? Perhaps JDBC and "select * from USER where..." are somehow viewed as database specific.

Similar Messages

  • Urgent: Can't lookup entity bean

    Dear all,
    I define a business process in workflow engine, which invoke a java class to get
    DB data through CMP entity bean. The entity bean was packed in to a ear and was
    workable/callable within the same ear.
    However, when the workflow engine can't invoke the entity bean, the workflow engine
    always throw exception as following.
         javax.naming.LinkException: . Root exception is javax.naming.NameNotFoundException:
    Unable to resolve 'app/ejb/ConsignmentEntityBean.jar#Consignments/local-home'
    Resolved: 'app/ejb' Unresolved:'ConsignmentEntityBean.jar#Consignments' ; remaining
    name 'ConsignmentEntityBean.jar#Consignments/local-home'
    I think the problem may occur in deployment/configuration. Since the problem is
    very urgent, anyone can help me? To all developers, How do you package/deploy
    Entity Bean in Integration Server?
    Thx,
    Philip

    I solved this.
    Since I was testing the action code only, I didn't define a navigation entry corresponding to the action string returned for this button:
    <h:commandButton value="Add" style="height:21px; width:51px;font-size:8pt; font-color: black;" action="#{resourceBean.addAction}">
    </h:commandButton>After I added a nav definition, it worked. I don't know why at this point. I suspect a key step in the lifecycle was pre-empted...someone else can probably explain why. If I get a chance to research it after I'm done with my project, I'll update this post.
    Thanks.
    -L

  • Performance with entity bean... What am i doing wrong??

    hello,
    My configuration:
    Development = OC4J 10g 9.0.4.0.0 standalone
    Production = Oracle IAS 10g 9.0.4
    JBoss version = 4.0.3 SP1
    I have an application using CMP Entity beans. My architecture uses Stateless session bean to access to the entities and values objects to transfer the data.
    One of this entity beans has the following parameters:
    id : NUMBER(20)
    name : VARCHAR(255)
    data : BLOB
    2 values objects are used to access the entity bean:
    MyLightValueObject with parameters: id and name
    MyValueObject with parameters: id, name and data
    The method findAll of my stateless session bean takes about 255 ms when there are 50 objects in the database under JBoss, but takes more than 10 seconds when deployed on OC4J.
    <pre>
         public java.util.Collection findAll() throws javax.ejb.FinderException,
                   javax.naming.NamingException {
              // This statement takes about 200 millisonds on either server.
              java.util.Collection selected = getLocalHome().findAll();
    // The access to light value object took 10 seconds under OC4J !
              ArrayList retval = new ArrayList(selected.size());
              for (Iterator i = selected.iterator(); i.hasNext();) {
                   retval.add(((ClauseLocal) i.next()).getClauseLightValue());
              return retval;
    </pre>
    I tried the following link already :
    http://download-west.oracle.com/docs/cd/B10464_02/core.904/b10379/optj2ee.htm#sthref529
    However, when I redeploy my ear on the server, whatever the options specified on the entity-deployement tag, the server reset his default options. Moreover, the locking_mode attribute is not specified in the DTD.
    Could you please help me.... Thanks for your comprehension.

    To install Firefox from the Android Market web site, you must be logged in to the web site and your phone using the same Google account. If that doesn't work, you can follow the instructions here for other ways to install Firefox for Android: https://wiki.mozilla.org/Mobile/Platforms/Android

  • Poor performance of CMP entity bean finder that uses unicode notation N''

    I am using Weblogic 6.1 with SQL Server 2000. I have an entity bean
    with a finder method that does a lookup based on a (indexed) varchar
    field. I noticed during testing that the performance of this finder
    method was much worse than other finders. I did some profiling of the
    SQL calls going from the Weblogic container to the database, and
    noticed that the query generated for the finder call used the unicode
    notation, which seems to result in very poor performance. If you run
    the following two queries through SQL Analyzer (or SQL Profiler),
    you'll notice a significant performance hit on the query that uses the
    unicode notation:
    example of generated SQL:
    SELECT WL0.field1, WL0.field2 ... FROM tblAccount WL0 WHERE
    WL0.accountId = N'40879'
    example of desired SQL:
    SELECT WL0.field1, WL0.field2 ... FROM tblAccount WL0 WHERE
    WL0.accountId = '40879'
    Is there any way to force it to generate the SQL without using the
    notation with the unicode 'N'?
    Thanks for any help,
    Don

    Don wrote:
    That worked (we use the Weblogic JDBC driver). The performance is MUCH
    better! Glad to help.
    Is there some place in the documentation where I should have
    seen this (ie. where can I find the documentation on other possibly
    useful connection properties)?It should be documented in the jdbc driver documents...
    Joe
    >
    Thanks,
    Don Tranquillo
    Joe Weinstein wrote:
    Hi. The driver does this to ensure that any 16-bit character string
    that Java has,
    is absorbed unaltered into the DBMS. There is no way to know a-priori
    whether
    the DBMS needs/wants an nvarchar datum or an 8-bit varchar datum. As
    you see,
    there is a big performance issue. You can tell the jdbc driver to
    send data
    as 8-bit (without the "N'" prefix) by setting a connection property:
    If you are using the weblogic mssqlserver driver, add the
    useVarChars=true
    property. If you are using the MS free driver or the DataDirect driver,
    add a property sendStringParametersAsUnicode=false.
    Joe
    Don wrote:
    I am using Weblogic 6.1 with SQL Server 2000. I have an entity bean
    with a finder method that does a lookup based on a (indexed) varchar
    field. I noticed during testing that the performance of this finder
    method was much worse than other finders. I did some profiling of the
    SQL calls going from the Weblogic container to the database, and
    noticed that the query generated for the finder call used the unicode
    notation, which seems to result in very poor performance. If you run
    the following two queries through SQL Analyzer (or SQL Profiler),
    you'll notice a significant performance hit on the query that uses the
    unicode notation:
    example of generated SQL:
    SELECT WL0.field1, WL0.field2 ... FROM tblAccount WL0 WHERE
    WL0.accountId = N'40879'
    example of desired SQL:
    SELECT WL0.field1, WL0.field2 ... FROM tblAccount WL0 WHERE
    WL0.accountId = '40879'
    Is there any way to force it to generate the SQL without using the
    notation with the unicode 'N'?
    Thanks for any help,
    Don

  • Bad Performance/OutOfMemory Error in CMP Entity Bean with Large DB

    Hello:
    I have an CMP Entity deployed on WLS 7.0
    The entity bean maps to a table that has 97,480 records.
    It has a finder: findAll() -- SELECT OBJECT(e) FROM Equipment e
    I have a JSP client that invokes the findALL()
    The performance is very poor ~ 150 seconds just to perform the findAll() - (Benchmark
    from within the JSP code)
    If more than one simultaneous call is made then I get outOfMemory Error.
    WLS is started with max memory of 512MB
    EJB is deployed with <max-beans-in-cache>100000</max-beans-in-cache>
    (without max-beans-in-cache directive the performance is worse)
    Is there any documentation available to help us in deploying CMP Entity Beans
    with very large number of records (instances) ?
    Any help is greatly appreciated.
    Regards
    Rajan

    Hi
    You should use a Select Method, it does support cursors.
    Or a Home Select Method combination.
    Regards
    Thomas
    WLS is started with max memory of 512MB
    EJB is deployed with <max-beans-in-cache>100000</max-beans-in-cache>>
    (without max-beans-in-cache directive the performance is worse)>
    Is there any documentation available to help us in deploying CMP
    Entity Beans with very large number of records (instances) ? Any help
    is greatly appreciated.>
    Regards>
    Rajan>
    >
    "Rajan Jena" <[email protected]> schrieb im Newsbeitrag
    news:3dadd7d1$[email protected]..
    >
    Hello:
    I have an CMP Entity deployed on WLS 7.0
    The entity bean maps to a table that has 97,480 records.
    It has a finder: findAll() -- SELECT OBJECT(e) FROM Equipment e
    I have a JSP client that invokes the findALL()
    The performance is very poor ~ 150 seconds just to perform the findAll() -(Benchmark
    from within the JSP code)
    If more than one simultaneous call is made then I get outOfMemory Error.
    WLS is started with max memory of 512MB
    EJB is deployed with <max-beans-in-cache>100000</max-beans-in-cache>
    (without max-beans-in-cache directive the performance is worse)
    Is there any documentation available to help us in deploying CMP EntityBeans
    with very large number of records (instances) ?
    Any help is greatly appreciated.
    Regards
    Rajan

  • Report with entity beans - BIG performance problem

    I have several EJBs (CMP entity beans).
    I need to build a report using linked EJBs and show this report
    to a user (so, updates are not needed - report is only for web page demonstration).
    the problem is: such report is generated too slow.
    I have ~100 records in table 'TestResult' and ~500 records in table 'TestObject'.
    these tables are linked like this:
    one testobject <--> many testresults
    for each testresult I need to show a line with some info which should be retrieved
    from bound EJBs (e.g. testresult-testobject-assigneduser-prioritylevel)
    how to optimize such report generation?
    I have heard something about session beans with Value Objects.
    do I need to use such session beans here?
    what is a general solution for generating reports using linked EJBs?
    I tried to solve the problem by using DB View, but it didn't help.
    I have used 'TestResultView' - info is retrieved fast enough from this view
    (several msecs), but displaying this info is still very costly.
    please, help!
    Oracle 8.1.7,
    WebLogic 6.1

    Hi,
    because I have checked the time required to
    1) retrieve EJBS (several msec)Let me share some of my views with you.Once you retrieve the EJBS ie ie the collection of remote interface from the finder method the container is firing single "select " query and gets all the primary keys back.
    2) cycle through it - get fields and display them
    (~4000 msec)Now the cycle of getting the value you are getting the bean from the PooledState to ready state which will get the fields by firing the "select" query (ejbload()). Now in the instance you are invoking the multiple methods and at the end it will remain there in ready till you call the remove which u are not doing so the time out will bring it back to the pooledstate.
    And if you are calling the bean very frequently then all the instances will go to the ready state and the activation & passivation will start developing ......
    So at the end when the bean moves back to the pooled state after timeout the ejbStore() fires the "update " query!!!!
    Let us consider the activation/passivation not appearing for simple understanding !!!!!!!!
    So for each iteration you are firing 2 queries to the database.So if you have 500 records then the queries generatted will be 1(select from finder)+2(1 by select(ejbload)+1 by update(ejbStore))*500. So the flow is calling 1001 queries ...Thus quering about 1000 queries will definetly take some time...
    So what is the solution????
    Any way you dont require to fire the update query as you are just viewing the data...So u can stop calling the ejbStore().
    Hence you queries will drop to half.Now how we can do this is by using the BMP.....
    The other solution is using the Sessionbean and store the data all 500 records in the Object which can be called across the n/w. This object should implements the Serializable interface and this tech is the Transfer Object feature.....
    Hope you find this useful..
    regards
    Vicky

  • URGENT: Migrating from SQL to Oracle results in very poor performance!

    *** IMPORTANT, NEED YOUR HELP ***
    Dear, I have a banking business solution from Windows/SQL Server 2000 to Sun Solaris/ORACLE 10g migrated. In the test environment everything was working fine. On the production system we have very poor DB performance. About 100 times slower than SQL Server 2000!
    Environment at Customer Server Side:
    Hardware: SUN Fire 4 CPU's, OS: Solaris 5.8, DB Oracle 8 and 10
    Data Storage: Em2
    DB access thru OCCI [Environment:OBJECT, Connection Pool, Create Connection]
    Depending from older applications it's necessary to run ORACLE 8 as well on the same Server. Since we have running the new solution, which is using ORACLE 10, the listener for ORACLE 8 is frequently gone (or by someone killed?). The performance of the whole ORACLE 10 Environment is very poor. As a result of my analyse I figured out that the process to create a connection to the connection pool takes up to 14 seconds. Now I am wondering if it a problem to run different ORACLE versions on the same Server? The Customer has installed/created the new ORACLE 10 DB with the same user account (oracle) as the older version. To run the new solution we have to change the ORACLE environment settings manually. All hints/suggestions to solve this problem are welcome. Thanks in advance.
    Anton

    On the production system we have very poor DB performanceHave you identified the cause of the poor performance is not the queries and their plans being generated by the database?
    Do you know if some of the queries appear to take more time than what it used to be on old system? Did you analyze such queries to see what might be the problem?
    Are you running RBO or CBO?
    if stats are generated, how are they generated and how often?
    Did you see what autotrace and tkprof has to tell you about problem queries (if in fact such queries have been identified)?
    http://download-west.oracle.com/docs/cd/B14117_01/server.101/b10752/sqltrace.htm#1052

  • Urgent: Entity Bean question

    Hi,
    I am using an entity beans to store and load records in a table. When I save records to the table I store them in an order of Primary key ID, but when loading the entity bean this order is not being preserved. Is there any way I can specify what the order (ascending or descending) the entiry bean needs to load records?
    Thanks.

    Dunno what exactly are you asking.
    I mean how are u making bulk entity bean save records?
    What exactly is the purpose ?
    Cheers,
    manjunath

  • Urgent help needed  session calling  remote interface entity bean Method -P

    i deployed session and entity as seperatly
    i didn't get the home interface object of entity bean
    give the soultion for the
    as i deployed in same jar file means
    its working

    Hi,
    hopefully I can help you.
    1. There are few helper classes which has to be ...We have just the same constellation. We have put the HelperClasses in the
    J2EE/home/lib dir, NOT specifying it in the application.xml. So everything works fine.
    The only thing: never, again: never put these files within WEB-INF and the lib-dir.
    With the HelperClasses in both we have only faced massive problems, mostly ClasCastExceptions.
    We had once all the helperClasses within J2EE/home/applications/lib, but this requires to
    specify this dir within the orion-application.xml within the appl dir in applications-deployment.
    It also worked fine.
    2. How can i utilise connection pooling in oc4j. In data-sources.xml, i am using ...I'm not sure of this, but I think, the container handles Connection Pooling, no matter what Factory you
    specify. But I think, the Class hasn't to be OracleConnectionPool ... but I have to check this (right now
    I have no access to our datasource.xml ..)
    cu
    ed

  • Urgent - (session bean calling Entity bean )Help Need for me - Plzzzzzzzzzz

    Hi
    I am created two beans one is Entity bean another one is session . the two beans deployed using diffrent jar files
    . I call the Entity bean methods using session bean
    But i couldn't locate the entity bean Home object through session bean(
    Sub is created but i couldn't get it that home obj stub)
    i get the following error messgae CorbaBad Operation
    i deployed two bean using same jar means my program is working
    Help meeeeeee

    I Send part of code to u
    public String logic1(rsp.ejbbm.ex.studVO s) {
              rsp.ejbbm.student.studentRemote r=null;
              String id = null;
              try {
    System.out.println("sdfsdfsdfs");
              Object obj = ctx.lookup("ejb/student");
              System.out.println("Lookup Succeded ");
              System.out.println("Object value" +obj.toString());
    /// HERE I GOT THE ERRO I COULDn'T Locate IT
    EJBHome obj1 =(EJBHome)javax.rmi.PortableRemoteObject.narrow(obj,rsp.ejbbm.student.studentHome.class);
              System.out.println("Object value" +obj1.toString());
              rsp.ejbbm.student.studentHome home=(rsp.ejbbm.student.studentHome)obj1;
              //studentHome hom=(studentHome)ctx.lookup("ejb/student");
         System.out.println("Object value" +obj.toString() );
         System.out.println("Lookup Converted ");
              home.create(s.getRollno(),s.getName());
              System.out.println("student Record isInserted in Oracle ");
              r= (rsp.ejbbm.student.studentRemote) home.findByPrimaryKey(s.getRollno());
              System.out.println("Student 5555 Name is "+ r.getName());
              id = r.getName();
              catch(Exception e ){
              System.out.println(e.toString());}
              return id;
    * @see javax.ejb.SessionSynchronization#afterBegin()
    public void afterBegin() {
    * @see javax.ejb.SessionSynchronization#afterCompletion(boolean)
    public void afterCompletion(boolean committed) {
    * @see javax.ejb.SessionSynchronization#beforeCompletion()
    public void beforeCompletion() {
    * See section 7.10.3 of the EJB 2.0 specification
    public void ejbCreate() {
              Properties p = new Properties();
              p.put("java.naming.factory.initial", "com.sun.jndi.cosnaming.CNCtxFactory");
              try{
         ctx = new InitialContext(p);
         catch(Exception e) {System.out.println("Create Exception "+e.toString());}
    }

  • Entity bean connection with SQL Server Error! urgent

    Hi,
    I am working with J2EE tutorial and when i tried SavingsAccount Entity bean to connect with SQL Server 2000(other than default Cloudscape)and I'm also having SQL Server 2K JDBC Driver installed. I also made entries in Server Configuration menu of J2EE deployment tool for this MS JDBC Driver for SQL Server 2K,I will enclose my dbName and connection method in the entity bean , but i am getting error like this.
    my data base name in SQL Server 2K is 'rajeshrNew'.
    private String dbName="java:comp/env/jdbc/rajeshrNew"; //dbName
    private void makeConnection() throws NamingException, SQLException {
    InitialContext ic = new InitialContext();
    DataSource ds = (DataSource) ic.lookup(dbName);
    con = ds.getConnection();
    and errors receiving are:
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.RemoteException: nested exception is: javax.ejb.EJBException: Unable to connect to database. No suitable driver; nested exception is:
    javax.ejb.EJBException: Unable to connect to database. No suitable driver
    java.rmi.RemoteException: nested exception is: javax.ejb.EJBException: Unable to connect to database. No suitable driver; nested exception is:
    javax.ejb.EJBException: Unable to connect to database. No suitable driver
    javax.ejb.EJBException: Unable to connect to database. No suitable driver <<no stack trace available>>
    Please help me to resolve this problem!!
    Regards
    Rajesh R

    yes i do create System DSN with rajeshrNew and my default.properties file look like this..
    # maximum size of message driven bean instance
    # pool per mdb type
    messagebean.pool.size=3
    # maximum size of a "bulk" message bean delivery
    messagebean.max.serversessionmsgs=1
    # message-bean container resource cleanup interval
    messagebean.cleanup.interval=600
    passivation.threshold.memory=128000000
    idle.resource.threshold=600
    log.directory=logs
    log.output.file=output.log
    log.error.file=error.log
    log.event.file=event.log
    distributed.transaction.recovery=false
    transaction.timeout=0
    transaction.nonXA.optimization=true
    sessionbean.timeout=0
    # validating parser values
    # validating.perser is used when archive file are loaded by
    # any of the J2EE Reference Implementation tools.
    # deployment.validating.parser is used when deploying an
    # archive on the J2EE AppServer.
    validating.parser=false
    deployment.validating.parser=true
    now u tell me what i have to change..
    with regards
    Rajesh

  • Updating Entity Bean (URGENT)

    Hello,
    I have an entity bean created in my jdeveloper based on a table in my database, I have added two colomns to my table how do I make my entity synchronize(update) with the database table and generate GET and SET methods for the(new colomns)in the altered table.
    regards,
    Hussam Galal

    EJB spec does not allow update of the primary key. Any other update should be fine.
    Regards,
    Marina

  • To use Entity Bean or Oracle stored Package?

    Currently, in my project, Weblogic8.1 and Oracle is used, but lots of business logic is implemented using Oracle stored Packages, many of these packages have a package level readonly lookup table(like index-by table or nested table), which is populated with data from database, once the package is called, and is accessed very often in subsequent calls of stored procedures.
    Since, in Weblogic server, a connection pool is maintained, and those package level lookup tables would be stored as session data in oracle PGA, I'm afraid this might cause oracle database server to be overloaded.
    to fully take advantage of middleware cache service that weblogic provide, should I move those business logic out of oracle and implement them using like read only entity bean?
    any help appreciated!

    Its very hard to say without knowing the usage patterns of the data. It sounds like you have a lot of read-only entities. These could be spread around a WLS cluster, therefore there is more scalability and performance with this option. However, I would not neccessarily rewrite business logic from SP into EJB just for middle-tier caching.
    If its a DB intensive app with lots of SQL, then if the calls are within SP's, there is only 1 call from WLS and the DBA ought o be able to tune the DB usin read-ahead and other DBA semantics. If there is locality of reference in the data, again, DB can use read-ahead better than WLS, although RO cache in middle is more scalable than DBMS.
    I wouldnt rewrite business logic from SP to EJB/Entity beans to take advantage of cache, especially if there is no locality of read-only reference to data. Oracle could do this better in my opinion, especially if SP's already exist
    Need for information on the usage patterns of the data - how is it CRUD'd.
    I would use-case the steel threads and put them under test load to see if the SP's really are an issue, since this is an architecture decision. What state is the project at? Live/Dev? Inception?

  • Multiple instances of the same entity bean?

    I am designing a J2EE application that is made up of a number of separate components that each have a well-defined responsibility. Each component is made up of one or more J2EE components (web clients and EJBs). I want to design the application such that it is easy in the future to deploy each component (or a group of components) on different servers. In order to do this I need to make sure that the interfaces between each component are exposed as remote interfaces (but I will use local interfaces inside each component). However, there are a number of entity beans that need to be accessed by more than one component. I am wondering how best to expose these entity beans. I believe there are a number of options:
    1. Expose remote interfaces on each of the shared entity beans. The disadvantage of this approach is that it is inefficient and that I will not be able to take advantage of container managed relationships. (I am intending to use container managed persistence.)
    2. Create a facade object (stateful session bean) for each of the entity beans which exposes a remote interface and in turn accesses the shared entity beans locally. The disadvantage of this approach is that I have to create some extra EJBs and that I cannot directly make use of container managed relationships etc from the client component.
    3. I don't know if this is an option but I am wondering whether I can deploy a copy of each shared entity bean with each application component. The advantage of this approach is that the component would access the entity locally and could make use of container managed relationships. However, I don't know what the issues are with having more than one instance (per primary-key) of an entity in the same application. I don't know whether this would cause errors of whether they would get out of sync (because different instances with the same primary key would be updated by different clients). Initially each component would be deployed in the same server but later they would be deployed in different servers. In both cases with this option each component (JAR) would have copies of the shared entity bean classes.
    Any suggestions as to the best approach and whether the last option is feasible would be much appreciated.
    Thanks.

    I think 2 beats 1. The main reason being to minimise the number of network calls. You're basically asking, are fascades a good idea? and the answer is yes.
    You can obviously do 3 in different app servers. However you'll need to configure your app servers so they can handle the fact that they're not the only ones updating the database. This is to handle concurrency as you mentioned. How you do this will depend on your app server and will affect performance, but shouldn't be a problem.
    I think you should definately decide up front what's going in different app servers, I dunno if 3 would work in the same app server.
    Why do you would want to use multiple app servers?
    Why not have everything in the same app?
    Is is just the 1 database?
    You can use clustering for scalability.

  • How to load the existing data from the databse in the CMP entity bean?

    hello
    my problem is as follows--
    i am creating a CMP entity bean.in these beans client create the data instances using create() function.
    now a entity bean will be created for the newly created data and it's EJBObject will also be formed.
    now we will be able to perform finder methods over them.
    remember these data has been newly created in the database.
    but now if i want to perform the finder methods on the
    existing data in the database( i don't need to use create() fn as i am not "creating" the data.). how will i perform the query over the existing data.
    basically i have to make a CMP bean to extract the data corresponding to a particular condition , from the database table. i don't want to create the data in the database but just find out what data satisfies my condition.
    thanking you
    Prashant

    you have to use findByXXX methods. depending on your appserver you may have to declare them (and eventually the query you want to be used) in the vendor specific deploiement descriptor.
    (e.g. using jboss i don't remember having explicitly declare the findBySomeField method - where someField is a persistent field - in the dd, whereas with bas all finder methods have to be explicitly declared)
    [note that obviously these methods have to be present in your home interface]

Maybe you are looking for