Why we do we use TopLink Queries?

We can make object-queries and data-queries using Java or SQL.
Why we we invent TopLink Queries? What are the TopLink Queries used for?
Are they used to replace of Java or SQL queries?
Thank you

Generaly i think that TopLink queries are much more specialized then Java queries. So you can use them to cover way more unusual cases. Probably you could do the same with JPA queries and Java postprocessing of results. But it would take more time to write and it wouldn't be as efficient as specialized TopLink queries. For example using ReadAllQuery and addBatchReadAttribute you can have 2 queries instead of 1+n.
On the other hand you could do the same with SQL but then you would have to transform SQL results to objects with every query and that is not efficient.
Take a look at javadoc's of *Query classes in oracle.toplink.queryframework there are many hints why different types of Queries exist.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

Similar Messages

  • How to use join queries with toplink

    Hi there
    I'm using toplink within the JDeveloper 10.1.3.3. with great success.
    Now, I need to query multiple tables using a join SQL.
    How do you configure toplink now without creating database views?
    I could not find an easy with within the JDev IDE or from google search.
    Any help please?
    Thanks
    Henkie

    In a TopLink query you can query across any relationship to another object. You can also join or batch read the object's relationship using the ObjectLevelReadQuery and ReadAllQuery API (see TopLink documentation).
    You can also map a class to multiple tables.
    -- James : http://www.eclipselink.org

  • Why it is so slow using toplink JPA in applet or webstart

    I use jpa in the applet,but it is too slow to initialize the toplink jpa.
    It takes about 80 seconds to execute this method:
    EntityManagerFactory factory=Persistence.createEntityManagerFactory("unit");
    The applet/webstart has the security authorization.
    I even modify the java.policy file to give the applet AllPermission.
    How could I fix this?
    thx for u help.
    with regards

    To test if it is jpa's problem.
    I create a new desktop project and didn't use toplink JPA.
    It performace good. But if I use JPA in this project.It became so slow.
    as I said before. I have give the programme authorization to run.
    Can anyone help.
    Even when I change to openJPA.It just performace a little faster.
    cause the project is nearly finished,I can't replace JPA in the project.It cost too much time that I can't afford.
    I don't know what is the problem.
    Please help.
    thank you.

  • Help with useing toplink please..

    Hello
    I am writing J2EE apps that will run on a 10g app server. I thought that toplink was what I should be using to do my model layer. But there are several simple things I can't find out how to do. Things like make a LOV, how do I set a where clause and restrict what the end user is looking at?
    Should I be using the ADF stuff instead? I was under the impression TopLink was the future direction at oracle so thats why I picked it. I have worked all the toplink tutorials I found. I can create mappings and all that. Setting it up isn't the problem, using it once I have it set up thats what I need to figure out. Can anyone point me in the direction of some tutorials or examples on how to use toplink? (especially in j2ee apps).
    Thanks
    troy

    Troy,
    TopLink is a core piece of Oracle's enterprise Java strategy. We are dedicated to standardization of ORM persistence through EJB 3.0 and TopLink is our implementation and the basis of Sun's reference implementation. Additionally, the use of TopLink is not mutually exclusive to using ADF. Within ADF you can use a variety of persistence technologies including TopLink.
    Here is a sample workshop on building applications with TopLink in ADF: http://www.oracle.com/technology/obe/obe9051jdev/ide1012/adfworkshop/buildingadfapplicationsworkshop.htm
    In order to filter or restrict results coming back from the database you need to make use of queries. TopLink has 5 query options available:
    1. TopLink's Expression API
    2. EJB QL
    3. Custom SQL
    4. Stored Procedures
    5. Query By Example
    Quick Tour overview: http://www.oracle.com/technology/products/ias/toplink/quicktour904/que01_01.htm
    You can develop your queries directly in the API of your application or you can use the mapping editors (JDeveloper or Workbench) to declaratively construct your queries. I would recommend using the mapping editors and the expression framework. This will allow the tools to assist you as your application evolves. When mappings change you will be notified if they break any of your defined queries.
    In the 10.1.3 documentation you can start learning about queries at:
    http://download-west.oracle.com/otn_hosted_doc/toplink/1013/DP4/_html/persun005.htm#sthref5432
    Cheers,
    Doug

  • How to use toplink "build expression"  with soundex function

    We are using toplink experssion builder to build the query. can any one help me on build a query with soundex using toplink..
    for example :
    SELECT last_name, first_name
    FROM hr.employees
    WHERE SOUNDEX(last_name)
    = SOUNDEX('SMYTHE');

    TopLink's ExpressionOperator does have an operator defined for soundex. I have an example that uses it that I customized to match you case.
    I would recommend defining these queries as named queries using an after-load method:
        public static void afterLoadEmployee(ClassDescriptor descriptor) {
            ReadAllQuery raq = new ReadAllQuery(Employee.class);
            ExpressionBuilder eb = raq.getExpressionBuilder();
            Expression fnExp =
                ExpressionOperator.soundex().expressionFor(eb.get("lastName"));
            Expression valExp =
                ExpressionOperator.soundex().expressionFor(eb.getParameter("L_NAME"));
            raq.setSelectionCriteria(fnExp.equal(valExp));
            raq.addArgument("L_NAME", String.class);
            descriptor.getDescriptorQueryManager().addQuery("Employee.findBySoundexLastName",
                                                            raq);
        }Now you can execute the query anywhere in your application using:
            List<Employee> emps =
                (List<Employee>)session.executeQuery("Employee.findBySoundexLastName",
                                                     Employee.class, "SMYTHE");The SQL generated is a little different due to the multiple tables used in the employee example model but here is what I got:
    SELECT t0.EMP_ID, t1.EMP_ID, t0.F_NAME, t1.SALARY, t0.L_NAME, t0.GENDER, t0.VERSION, t0.ADDR_ID,
    t0.MANAGER_ID, t0.END_DATE, t0.START_DATE FROM EMPLOYEE t0, SALARY t1
    WHERE ((SOUNDEX(t0.L_NAME) = SOUNDEX('SMYTHE')) AND (t1.EMP_ID = t0.EMP_ID))Doug

  • In Siri, I can call by my voice, but why I can not use Siri voice call in my country (Laos), just can call only us phone number; my country we use like 3 number for option call, 8 numbers for call friend but Siri cannot use this please help us, thanks

    In Siri, I can call by my voice, but why I can not use Siri voice call in my country (Laos), just can call only us phone number; my country we use like 3 number for option call, 8 numbers for call friend but Siri cannot use this please help us, thanks
    And please help me can type Laos font in it like andrio phone.

    Hi Cozumel,
    Thanks for posting. I'm sorry you're having problems with your bills. I can take a look at this for you. Drop me an email with your account details and a link to this thread for reference. You'll find the address in my profile.
    Cheers
    David
    BTCare Community Mod
    If we have asked you to email us with your details, please make sure you are logged in to the forum, otherwise you will not be able to see our ‘Contact Us’ link within our profiles.
    We are sorry but we are unable to deal with service/account queries via the private message(PM) function so please don't PM your account info, we need to deal with this via our email account :-)

  • Can anyone tell me WHY Oracle won't allow sub-queries in outer joins?

    Hi,
    I've recently been tasked with converting a series of InterBase dbs to Oracle.
    Many of the queries in the InterBase dbs use sub-queries in outer joins. Oracle won't countenance this (01799 - a column may not be outer-joined to a subquery).
    I can get around it using functions but WHY won't Oracle allow this?
    SQL Server allows it, InterBase allows it (I don't know about ANSI SQL) but it seems to be a common enough technique...
    I'm just curious (and also a little frustrated!).
    Thanks in advance,,,

    Hi,
    >>Oracle treat an empty string as a NULL
    Well, you same answer your question. Because it is empty
    SGMS@ORACLE10> create table tab (cod number, name varchar2(1));
    Table created.
    SGMS@ORACLE10> insert into tab values (1,'');
    1 row created.
    SGMS@ORACLE10> insert into tab values (2,' ');
    1 row created.
    SGMS@ORACLE10> commit;
    SGMS@ORACLE10> select cod,dump(name) from tab;
           COD DUMP(NAME)
             1 NULL
             2 Typ=1 Len=1: 32
    SGMS@ORACLE10> select * from tab where name is null;
           COD NAME
             1Cheers
    If you talking about language tools, for example PHP treat empty string <> of NULL values. e.g: functions like is_empty() and is_null()
    Message was edited by:
    Legatti

  • Updating a persons name using toplink uow

    Hi,
    I am having problems updating the name of a PERSON. I am using Toplink with a SessionBeanFacade.
    I am using a Backing Bean, which is calling the Session Bean Facade. I was debugging the code and the strange thing is: I can see the updated name in the entity and in the uow, but after uow.commit the updated name isn't in the database. Why won't the values from the uow persist?
    SESSION BEAN FACADE
      public Object mergeEntity(Object entity) {
        UnitOfWork uow = getSessionFactory().acquireUnitOfWork();
        Object workingCopy = uow.readObject(entity);
        if (workingCopy == null)
          throw new RuntimeException("Could not find entity to update");
        uow.deepMergeClone(entity);
        uow.commit();
        return workingCopy;
    BACKING BEAN
      public void recoverBusinesspartner(ActionEvent actionEvent) {
        DCBindingContainer dcBind = (DCBindingContainer)getBindings();
        DCIteratorBinding iterBind = (DCIteratorBinding)dcBind.get("personIterator");
        iterBind.getCurrentRow().setAttribute("name", "Bodhy");
        dcBind.getOperationBinding("mergeEntity").execute();
      }Thank you
    Bodhy
    Edited by: Bodhy on 30.09.2008 06:02
    P.S. I don't get any errors or some other message in my log. I am using JDeveloper 11g TP3

    Hello,
    Glad you found the problem. As I mentioned in my previous post, you should not be modifying objects from the session cache. When you do any sort of query on a session other than a UnitOfWork, the objects returned exist in the shared session cache. When you register an object, the state of the object is pulled from the session cache and used for a comparison - TopLink will think that is the state the database is in.
    This is why Detach resolves the issue- it makes a copy of the object so that changes to it do not get put into the cached copy.
    I would recommend looking at:
    http://www.oracle.com/technology/products/ias/toplink/doc/1013/main/_html/cachun001.htm
    and
    http://www.oracle.com/technology/products/ias/toplink/technical/unitOfWorkWP.pdf
    to see how caching and the UOW work in TopLink
    Best Regards,
    Chris

  • Useing toplink jpa in jdev11 and mysql4,but meet the DatabaseException

    Hello everyone,I'm useing toplink jpa in jdev11 and mysql4.I create a class from database success.Then I use "Java Service Facade" to create a class called JavaServiceFacade sucess.Then I add some code:
    System.out.println(javaServiceFacade.queryCnationalityFindAll().size())
    in main
    then I run the program,but I got this error:
    xception in thread "main" Local Exception Stack:
    Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.DatabaseException
    Internal Exception: java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
    Error Code: 0
         at oracle.toplink.essentials.exceptions.DatabaseException.sqlException(DatabaseException.java:290)
         at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultConnector.java:87)
         at oracle.toplink.essentials.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:170)
         at oracle.toplink.essentials.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:218)
         at oracle.toplink.essentials.internal.databaseaccess.DatabaseAccessor.connect(DatabaseAccessor.java:227)
         at oracle.toplink.essentials.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:294)
         at oracle.toplink.essentials.threetier.ConnectionPool.buildConnection(ConnectionPool.java:102)
         at oracle.toplink.essentials.threetier.ConnectionPool.startUp(ConnectionPool.java:324)
         at oracle.toplink.essentials.threetier.ServerSession.connect(ServerSession.java:443)
         at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:571)
         at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:208)
         at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:212)
         at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:78)
         at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:111)
         at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:105)
         at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:76)
         at project6.JavaServiceFacade.getEntityManager(JavaServiceFacade.java:23)
         at project6.JavaServiceFacade.queryCnationalityFindAll(JavaServiceFacade.java:72)
         at project6.JavaServiceFacade.main(JavaServiceFacade.java:18)
    Caused by: java.sql.SQLException: [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
         at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
         at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
         at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3074)
         at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)
         at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)
         at java.sql.DriverManager.getConnection(DriverManager.java:525)
         at java.sql.DriverManager.getConnection(DriverManager.java:140)
         at oracle.toplink.essentials.sessions.DefaultConnector.connect(DefaultConnector.java:85)
         ... 17 more
    there's some chinese you may not know,that means there's something wrong with
    Microsoft odbc.I'm puzzle of that:I'm useing java+mysql,why there's wrong with odbc???
    thank you very much
    (maybe it's jdev11 technical preview edition so it can't work?)

    HI
    can you reply the feedback of metalink? because I'm having similar problem.
    I debug in junit and embebbed at the jdev and it works well, but when I deploy in a standalone oc4j it gives me the same error of Excepção de E/S: The Network Adapter could not establish the connection
    And I'm not using 11g, I'm still in 10g but the problem might be the same.
    cumps
    DnlCY
    null

  • Why can I not use my gmail account calendar on my MACbook Air?

    Why can I not use my gmail account calendar on my MAC, when I try to sync it, it says "secure connection cannot be established" Is there a setting I don't know about?

    Launch the Console application in any of the following ways:
    ☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
    ☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
    ☞ Open LaunchPad. Click Utilities, then Console in the icon grid.
    Make sure the title of the Console window is All Messages. If it isn't, select All Messages from the SYSTEM LOG QUERIES menu on the left. If you don't see that menu, select
    View ▹ Show Log List
    from the menu bar.
    Click the Clear Display icon in the toolbar. Then try the action that you're having trouble with again. Select any messages that appear in the Console window. Copy them to the Clipboard by pressing the key combination command-C. Paste into a reply to this message (command-V).
    When posting a log extract, be selective. In most cases, a few dozen lines are more than enough.
    Please do not indiscriminately dump thousands of lines from the log into this discussion.
    Important: Some private information, such as your name, may appear in the log. Anonymize before posting.

  • Why doesn't Aperture use iPhoto's date logic?

    This is how image date logic works in iPhoto. This image date value is used in queries and sorts.
    1. Image date is stored in database.
    2. Initial value taken from image metadata if available.
    3. If image metadata not available, use file date.
    4. User can edit database date (does not change file header).
    This is how it seems to work in Aperture 1.5
    1. Image date is stored in database.
    2. Initial value taken from iPhoto database if import from iPhoto.
    3. If not import from iPhoto, initial value taken from image metadata if available.
    4. If image metadata not available, use file date.
    5. User CANNOT edit database date.
    I was shocked (really, I'm still stunned) that Aperture 1.5 still does not equal iPhoto's date management capabilities. Since Aperture is a Pro application it's reasonable to have several date fields, but one of them should behave like iPhoto. That metadata field should be useable in queries/filters, sorts, display, book printing, etc. It should be the default date metadata element for all date related operations.
    Please note, it's fine that Aperture does not muck with image file (exif) metadata -- that's dangerous. EXIF is a quasi-standard badly implemented.
    So now, my question. Why?
    Aperture 1.5 was a huge update. They fixed much more than I thought was possible. It could have been labeled Aperture 3.0. Offering it free to users was a genuine apology, gratefully accepted I'm sure. It took all my strength of will not to order it immediately, waiting instead for the initial reviews to come in.
    So there had to be a reason Aperture's Product Manager, Joe Schorr, had not to implement iPhoto's image date behavior. Something he'd thought carefully about.
    What was it?

    Perhaps it's just that they don't have infinite resources ?
    The big deal (for me) was that they can "import" files but leave them on the filesystem. In true Apple fashion though, they took the extra steps of allowing management of the images within the application (consolidate and relocate). Perhaps the knock-on effects of all the things they did implement prevented them from doing other things...
    We see Apple as a corporate entity, master of its domain, all-seeing, all-knowing, all-powerful within the confines of an Infinite Loop. In reality it's a bunch of people who only have a fixed number of hours in the day to work. Someone takes the decision that X is more important than Y and Y is dropped for this release - it's that simple IMHO.
    In any event, I'd like to know how many people worked on Aperture 1.5 - the difference between the Aperture update and the Lightroom update was huge! Do they have lots more engineers/QA, or did they just get more done in the same time-frame ?
    -=C=-
    Mac Pro   Mac OS X (10.4.7)  

  • Hi, my MacBook Air is not working anymore if it's not connected with the power cable. It's pretty new so I can't imagine that the battery is dead already. Why can't I use my MacBook Air without the power cable even though I charged it for hours?

    Hi, my MacBook Air is not working anymore if it's not connected with the power cable. It's pretty new so I can't imagine that the battery is dead already. Why can't I use my MacBook Air without the power cable even though I charged it for hours?

    Please take the Mac to  Apple store to have it checked out.
    Genius Bar reservation
    http://www.apple.com/retail/geniusbar/
    Best.

  • Why can't I use my mid 2010 macbook pro with 8GB memoir and NVIDIA GEForce GT 330M 256MB to run 3D in photoshop CC?

    Why can't I use my mid 2010 macbook pro with 8GB memoir and NVIDIA GEForce GT 330M 256MB to run 3D in photoshop CC?

    3-D is very memory intensive.
    System requirements | Photoshop
    Mac OS
    Multicore Intel processor with 64-bit support
    Mac OS X v10.7, v10.8, or v10.9
    2 GB of RAM (8 GB recommended)
    3.2 GB of available hard-disk space for installation; additional free space required during installation (cannot install on a volume that uses a case-sensitive file system or on removable flash storage devices)
    1024x768 display (1280x800 recommended) with 16-bit color and 512 MB of VRAM (1 GB recommended)**
    OpenGL 2.0–capable system
    Internet connection and registration are necessary for required software activation, membership validation, and access to online services.*
    ** 3D features are disabled and some Mercury Graphics Engine enhanced features may not work with less than 512 MB VRAM. Read the Help article.
    Bottom line, you don't have enough VRAM
    Nancy O.

  • Why can't we use iTunes gift cards with family sharing? After Christmas, we now have lots of account credit we can't use. Very frustrating.

    Why can't we use iTunes gift cards with family sharing? After Christmas, we now have lots of account credit we can't use. Very frustrating. There is no option found for using account credit.

    I just logged out of my daughter's account and back in, and now it works. Deducted from gift card account balance. So I hope this is resolved.

  • How can I use TopLink for querys that have two and more tables?

    I use TopLink today, and I can use one table to query, but how can I use TopLink for querys that have two and more tables?
    Thank you for see and answer this question.

    You can write a custom SQL query and map it to an object as needed. You can also use the Toplink query language "anyOf" or "get" commands to map two tables as long as you map them as one to one (get command) or one to many (anyOf command) in the toplink mapping workbench.
    Zev.
    check out oracle.toplink.expressions.Expression in the 10.1.3 API

Maybe you are looking for