> For the complete documentation index, see [llms.txt](https://bernardo.gitbook.io/development-docs-java/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bernardo.gitbook.io/development-docs-java/jqassistant/constraints.md).

# Constraints

These are validation rules, to check if the application fits into an structural criteria.

This constraint makes sure all the facades are annotated as transactional:

```markup
<constraint id="architecture:NoFacadeWithoutTransactional">
   <requiresConcept refId="architecture:Facade" />
   <description>Facade methods should me marked as transactional.
   </description>
   <cypher><![CDATA[
      MATCH
          (c:Facade:Interface)-[:DECLARES]->(m:Method { visibility: 'public' })
      WHERE
          NOT (m:Method:Spring:Transactional)
          AND NOT (m:Constructor)
      RETURN
          c.name as class,
          m.name as method
     ]]></cypher>
</constraint>
```
