alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Hibernate example source code file (filters.pot)

This example Hibernate source code file (filters.pot) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Hibernate tags/keywords

a, employee, filter, filter, filters, hibernate, my_filtered_column, tag, tag, the, the, this, using, using

The Hibernate filters.pot source code

# SOME DESCRIPTIVE TITLE.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2010-07-20 21:02+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <kde-i18n-doc@kde.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: application/x-xml2pot; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. Tag: title
#: filters.xml:31
#, no-c-format
msgid "Filtering data"
msgstr ""

#. Tag: para
#: filters.xml:33
#, no-c-format
msgid "Hibernate3 provides an innovative new approach to handling data with \"visibility\" rules. A <emphasis>Hibernate filter is a global, named, parameterized filter that can be enabled or disabled for a particular Hibernate session."
msgstr ""

#. Tag: title
#: filters.xml:39
#, no-c-format
msgid "Hibernate filters"
msgstr ""

#. Tag: para
#: filters.xml:41
#, no-c-format
msgid "Hibernate3 has the ability to pre-define filter criteria and attach those filters at both a class level and a collection level. A filter criteria allows you to define a restriction clause similar to the existing \"where\" attribute available on the class and various collection elements. These filter conditions, however, can be parameterized. The application can then decide at runtime whether certain filters should be enabled and what their parameter values should be. Filters can be used like database views, but they are parameterized inside the application."
msgstr ""

#. Tag: para
#: filters.xml:50
#, no-c-format
msgid "Using annotatons filters are defined via <literal>@org.hibernate.annotations.FilterDef or @org.hibernate.annotations.FilterDefs. A filter definition has a name() and an array of parameters(). A parameter will allow you to adjust the behavior of the filter at runtime. Each parameter is defined by a @ParamDef which has a name and a type. You can also define a defaultCondition() parameter for a given @FilterDef to set the default condition to use when none are defined in each individual @Filter. @FilterDef(s) can be defined at the class or package level."
msgstr ""

#. Tag: para
#: filters.xml:63
#, no-c-format
msgid "We now need to define the SQL filter clause applied to either the entity load or the collection load. <literal>@Filter is used and placed either on the entity or the collection element. The connection between @FilterName and @Filter is a matching name."
msgstr ""

#. Tag: title
#: filters.xml:70
#, no-c-format
msgid "@FilterDef and @Filter annotations"
msgstr ""

#. Tag: programlisting
#: filters.xml:72
#, no-c-format
msgid ""
      "@Entity\n"
      "@FilterDef(name=\"minLength\", parameters=@ParamDef( name=\"minLength\", type=\"integer\" ) )\n"
      "@Filters( {\n"
      "    @Filter(name=\"betweenLength\", condition=\":minLength <= length and :maxLength >= length\"),\n"
      "    @Filter(name=\"minLength\", condition=\":minLength <= length\")\n"
      "} )\n"
      "public class Forest { ... }"
msgstr ""

#. Tag: para
#: filters.xml:75
#, no-c-format
msgid "When the collection use an association table as a relational representation, you might want to apply the filter condition to the association table itself or to the target entity table. To apply the constraint on the target entity, use the regular <literal>@Filter annotation. However, if you want to target the association table, use the @FilterJoinTable annotation."
msgstr ""

#. Tag: title
#: filters.xml:84
#, no-c-format
msgid "Using <classname>@FilterJoinTable for filterting on the association table"
msgstr ""

#. Tag: programlisting
#: filters.xml:87
#, no-c-format
msgid ""
      "@OneToMany\n"
      "    @JoinTable\n"
      "    //filter on the target entity table\n"
      "    @Filter(name=\"betweenLength\", condition=\":minLength <= length and :maxLength >= length\")\n"
      "    //filter on the association table\n"
      "    @FilterJoinTable(name=\"security\", condition=\":userlevel >= requredLevel\")\n"
      "    public Set<Forest> getForests() { ... }"
msgstr ""

#. Tag: para
#: filters.xml:90
#, no-c-format
msgid "Using Hibernate mapping files for defining filters the situtation is very similar. The filters must first be defined and then attached to the appropriate mapping elements. To define a filter, use the <literal><filter-def/> element within a <hibernate-mapping/> element:"
msgstr ""

#. Tag: title
#: filters.xml:97
#, no-c-format
msgid "Defining a filter definition via <literal><filter-def>"
msgstr ""

#. Tag: programlisting
#: filters.xml:100
#, no-c-format
msgid ""
      "<filter-def name=\"myFilter\">\n"
      "    <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
      "</filter-def>"
msgstr ""

#. Tag: para
#: filters.xml:103
#, no-c-format
msgid "This filter can then be attached to a class or collection (or, to both or multiples of each at the same time):"
msgstr ""

#. Tag: title
#: filters.xml:107
#, no-c-format
msgid "Attaching a filter to a class or collection using <literal><filter>"
msgstr ""

#. Tag: programlisting
#: filters.xml:110
#, no-c-format
msgid ""
      "<class name=\"myClass\" ...>\n"
      "    ...\n"
      "    <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
      "\n"
      "    <set ...>\n"
      "        <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
      "    </set>  \n"
      "</class>"
msgstr ""

#. Tag: para
#: filters.xml:113
#, no-c-format
msgid "The methods on <literal>Session are: enableFilter(String filterName), getEnabledFilter(String filterName), and disableFilter(String filterName). By default, filters are not enabled for a given session. Filters must be enabled through use of the Session.enableFilter() method, which returns an instance of the Filter interface. If you used the simple filter defined above, it would look like this:"
msgstr ""

#. Tag: programlisting
#: filters.xml:123
#, no-c-format
msgid "session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-value\");"
msgstr ""

#. Tag: para
#: filters.xml:125
#, no-c-format
msgid "Methods on the org.hibernate.Filter interface do allow the method-chaining common to much of Hibernate."
msgstr ""

#. Tag: para
#: filters.xml:128
#, no-c-format
msgid "The following is a full example, using temporal data with an effective record date pattern:"
msgstr ""

#. Tag: programlisting
#: filters.xml:131
#, no-c-format
msgid ""
      "<filter-def name=\"effectiveDate\">\n"
      "    <filter-param name=\"asOfDate\" type=\"date\"/>\n"
      "</filter-def>\n"
      "\n"
      "<class name=\"Employee\" ...>\n"
      "...\n"
      "    <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/>\n"
      "    <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt\"/>\n"
      "    <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/>\n"
      "...\n"
      "    <!--\n"
      "        Note that this assumes non-terminal records have an eff_end_dt set to\n"
      "        a max db date for simplicity-sake\n"
      "    -->\n"
      "    <filter name=\"effectiveDate\"\n"
      "            condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
      "</class>\n"
      "\n"
      "<class name=\"Department\" ...>\n"
      "...\n"
      "    <set name=\"employees\" lazy=\"true\">\n"
      "        <key column=\"dept_id\"/>\n"
      "        <one-to-many class=\"Employee\"/>\n"
      "        <filter name=\"effectiveDate\"\n"
      "                condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
      "    </set>\n"
      "</class>"
msgstr ""

#. Tag: para
#: filters.xml:133
#, no-c-format
msgid "In order to ensure that you are provided with currently effective records, enable the filter on the session prior to retrieving employee data:"
msgstr ""

#. Tag: programlisting
#: filters.xml:137
#, no-c-format
msgid ""
      "Session session = ...;\n"
      "session.enableFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date());\n"
      "List results = session.createQuery(\"from Employee as e where e.salary > :targetSalary\")\n"
      "         .setLong(\"targetSalary\", new Long(1000000))\n"
      "         .list();"
msgstr ""

#. Tag: para
#: filters.xml:139
#, no-c-format
msgid "Even though a salary constraint was mentioned explicitly on the results in the above HQL, because of the enabled filter, the query will return only currently active employees who have a salary greater than one million dollars."
msgstr ""

#. Tag: para
#: filters.xml:144
#, no-c-format
msgid "If you want to use filters with outer joining, either through HQL or load fetching, be careful of the direction of the condition expression. It is safest to set this up for left outer joining. Place the parameter first followed by the column name(s) after the operator."
msgstr ""

#. Tag: para
#: filters.xml:149
#, no-c-format
msgid "After being defined, a filter might be attached to multiple entities and/or collections each with its own condition. This can be problematic when the conditions are the same each time. Using <literal><filter-def/> allows you to definine a default condition, either as an attribute or CDATA:"
msgstr ""

#. Tag: programlisting
#: filters.xml:155
#, no-c-format
msgid ""
      "<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-def>\n"
      "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>"
msgstr ""

#. Tag: para
#: filters.xml:157
#, no-c-format
msgid "This default condition will be used whenever the filter is attached to something without specifying a condition. This means you can give a specific condition as part of the attachment of the filter that overrides the default condition in that particular case."
msgstr ""

Other Hibernate examples (source code examples)

Here is a short list of links related to this Hibernate filters.pot source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.