<commit_before><?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2010-2011 The MyBatis Team

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!--  version: $Id$ -->

<document xmlns="http://maven.apache.org/XDOC/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">

  <properties>
    <title>MyBatis-Spring | Códig de ejemplo</title>
    <author email="<EMAIL>">The MyBatis Team</author>
  </properties>

  <body>
    <section name="Cógido de ejemplo">
      <p>
        JPetStore 6 es una aplicación web completa construida sobre MyBatis 3,
      	<a href="http://www.springsource.org">Spring 3</a> y <a href="http://www.stripesframework.org/">Stripes</a>.
        Está disponible para su descarga en la sección de
        <a href="http://code.google.com/p/mybatis/downloads/list?q=Product=Sample">downloads</a>
        del site de MyBatis.
        En esta sección haremos un recorrido por este ejemplo para comprender cómo está construido y cómo ejecutarlo.
      </p>
      <subsection name="Propósito">
      	<p>
      	Esta nueva versión de JPetStore viene con la misma idea en mente que sus precedesores: <strong>hazlo fácil</strong>. El propósito principal
      	tras JPetStore 6 es demostrar que una aplicación web completa puede construirse con solo unas pocas clases, y lo que es más importante,
      	sin necesidad de tener grandes conocimientos de programación. Sólo necesitas saber java básico y SQL.
      	</p>
      	<p>
      	La sexta versión de JPetStore es la más pequeña de la familia. Sólo usa 24 clases y conserva un buen diseño y estructura de programa.
      	Como veremos un poco después, no encontrarás código JDBC, de creación de objetos, de enlace de objetos o de gestión de transacciones.
      	Y lo que es más sorprendente es que <strong>no encontrarás ninguna llamada al API de MyBatis ¡</strong>. A pesar de que esto suena a mágia,
      	verás que la combinación de los mappers de MyBatis con la inyección de dependencias te permite realizar aplicaciones libres de dependencia
      	de MyBatis.
      	</p>
      </subsection>
      <subsection name="Estructura del código">
      	<p> JPetStore 6 sigue la típica estructura de una aplicación maven.</p>
<pre>/jpetstore                    <tt>&lt;-- El fichero maven pom.xml va aqui.</tt>
  /src
    /main/
      /java                   <tt>&lt;-- El código java va aqui.</tt>
        /org/
          /mybatis
            /jpetstore
              /domain         <tt>&lt;-- Los objetos de negocio van aqui.</tt>
              /persistence    <tt>&lt;-- Las mapper interfaces van aqui.</tt>
              /service        <tt>&lt;-- La lógica de aplicación va aqui.</tt>
              /web
                /actions      <tt>&lt;-- La lógica de presentación (actions) van aqui.</tt>
      /resources              <tt>&lt;-- Aqui van los recursos no-java.</tt>
        /org
          /mybatis
            /jpetstore
              /persistence    <tt>&lt;-- Los ficheros de mapeo XML van aqui.</tt>
        /database
      /webapp
        /css
        /images
        /WEB-INF              <tt>&lt;-- web.xml y applicationContext.xml están aqui.</tt>
          /jsp                <tt>&lt;-- los ficheros JSP van aqui.</tt>
      </pre>
      </subsection>

      <subsection name="Configuration files">
      <p>
      Los ficheros de configuración se leen durante el arranque de la aplicación. Su propósito es configurar los tres
      frameworks que componen la aplicación: Stripes, Spring y MyBatis. Solo tendremos que configurar
      dos ficheros: web.xml y applicationContext.xml.
      </p>
      <h4>web.xml</h4>
      <p>
      Primeramente debemos arrancar Stripts, asi que, para ello, seguimos el manual de Stripes. El manual indica
      que debe configurarse un dispatcher servlet y un filtro filter. Vamos allá.
      </p>
<source><![CDATA[
<filter>
	<display-name>Stripes Filter</display-name>
	<filter-name>StripesFilter</filter-name>
	<filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>StripesFilter</filter-name>
	<servlet-name>StripesDispatcher</servlet-name>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<servlet>
	<servlet-name>StripesDispatcher</servlet-name>
	<servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>StripesDispatcher</servlet-name><commit_msg>[spring] doc typos<commit_after><?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2010-2011 The MyBatis Team

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!--  version: $Id$ -->

<document xmlns="http://maven.apache.org/XDOC/2.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">

  <properties>
    <title>MyBatis-Spring | Código de ejemplo</title>
    <author email="<EMAIL>">The MyBatis Team</author>
  </properties>

  <body>
    <section name="Cógido de ejemplo">
      <p>
        JPetStore 6 es una aplicación web completa construida sobre MyBatis 3,
      	<a href="http://www.springsource.org">Spring 3</a> y <a href="http://www.stripesframework.org/">Stripes</a>.
        Está disponible para su descarga en la sección de
        <a href="http://code.google.com/p/mybatis/downloads/list?q=Product=Sample">downloads</a>
        del site de MyBatis.
        En esta sección haremos un recorrido por este ejemplo para comprender cómo está construido y cómo ejecutarlo.
      </p>
      <subsection name="Propósito">
      	<p>
      	Esta nueva versión de JPetStore viene con la misma idea en mente que sus precedesores: <strong>hazlo fácil</strong>. El propósito principal
      	tras JPetStore 6 es demostrar que una aplicación web completa puede construirse con solo unas pocas clases, y lo que es más importante,
      	sin necesidad de tener grandes conocimientos de programación. Sólo necesitas saber java básico y SQL.
      	</p>
      	<p>
      	La sexta versión de JPetStore es la más pequeña de la familia. Sólo usa 24 clases y conserva un buen diseño y estructura de programa.
      	Como veremos un poco después, no encontrarás código JDBC, de creación de objetos, de enlace de objetos o de gestión de transacciones.
      	Y lo que es más sorprendente es que <strong>no encontrarás ninguna llamada al API de MyBatis ¡</strong>. A pesar de que esto suena a mágia,
      	verás que la combinación de los mappers de MyBatis con la inyección de dependencias te permite realizar aplicaciones libres de dependencia
      	de MyBatis.
      	</p>
      </subsection>
      <subsection name="Estructura del código">
      	<p> JPetStore 6 sigue la típica estructura de una aplicación maven.</p>
<pre>/jpetstore                    <tt>&lt;-- El fichero maven pom.xml va aqui.</tt>
  /src
    /main/
      /java                   <tt>&lt;-- El código java va aqui.</tt>
        /org/
          /mybatis
            /jpetstore
              /domain         <tt>&lt;-- Los objetos de negocio van aqui.</tt>
              /persistence    <tt>&lt;-- Las mapper interfaces van aqui.</tt>
              /service        <tt>&lt;-- La lógica de aplicación va aqui.</tt>
              /web
                /actions      <tt>&lt;-- La lógica de presentación (actions) van aqui.</tt>
      /resources              <tt>&lt;-- Aqui van los recursos no-java.</tt>
        /org
          /mybatis
            /jpetstore
              /persistence    <tt>&lt;-- Los ficheros de mapeo XML van aqui.</tt>
        /database
      /webapp
        /css
        /images
        /WEB-INF              <tt>&lt;-- web.xml y applicationContext.xml están aqui.</tt>
          /jsp                <tt>&lt;-- los ficheros JSP van aqui.</tt>
      </pre>
      </subsection>

      <subsection name="Configuration files">
      <p>
      Los ficheros de configuración se leen durante el arranque de la aplicación. Su propósito es configurar los tres
      frameworks que componen la aplicación: Stripes, Spring y MyBatis. Solo tendremos que configurar
      dos ficheros: web.xml y applicationContext.xml.
      </p>
      <h4>web.xml</h4>
      <p>
      Primeramente debemos arrancar Stripes, asi que, para ello, seguimos el manual de Stripes. El manual indica
      que debe configurarse un dispatcher servlet y un filtro filter. Vamos allá.
      </p>
<source><![CDATA[
<filter>
	<display-name>Stripes Filter</display-name>
	<filter-name>StripesFilter</filter-name>
	<filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>StripesFilter</filter-name>
	<servlet-name>StripesDispatcher</servlet-name>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<servlet>
	<servlet-name>StripesDispatcher</servlet-name>
	<servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
	<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
	<servlet-name>StripesDispatcher</servlet-name>
{'fraction_non_alphanumeric': 0.10341424906256168, 'fraction_numerical': 0.007104795737122558, 'mean_word_length': 2.689479432107754, 'pattern_counts': {'":': 0, '<': 189, '<?xml version=': 2, '>': 187, 'https://': 0, 'lorem ipsum': 0, 'www.': 8, 'xml': 18}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2238977', 'n_tokens_mistral': 3296, 'n_tokens_neox': 3207, 'n_words': 1035}