Hi Ruwan,

Since the final variable is not static can we name it using camel case
convention[1]. Otherwise check style plugin will give errors.

[1] - final String insertIdpSql

Thanks!
Rajith

On Fri, Oct 28, 2016 at 9:41 AM, Afkham Azeez <[email protected]> wrote:

> Query should be close to the code. +1 for Ruwan's proposal. Not only for
> queries, you should use your judgment when deciding where to place
> constants as well. In many cases, it makes sense to keep the constants in
> the relevant class where it is used but people have been blindly putting
> those into a Constants class.
>
> On Fri, Oct 28, 2016 at 8:04 AM, Sumedha Rubasinghe <[email protected]>
> wrote:
>
>> I am actually in favour of what Ruwan is suggesting.
>>
>> 1. When a problem comes we  usually start by looking at the particular
>> query. There is no need to look at all queries together.
>>
>> 2. Having the query close to rest of the jdbc code is easier.
>>
>> 3. Regardless of where it is, all queries should be formatted for
>> readability than putting it as a single liner string
>>
>> On Oct 28, 2016 7:27 AM, "Selvaratnam Uthaiyashankar" <[email protected]>
>> wrote:
>>
>>> Do we have any requirements to see all queries together? If so, defining
>>> in a single place would be easy. However, I am not sure whether we have
>>> used that requirement ever. We normally look at the query local to the
>>> method? If so, I am +1 for Ruwan's proposal. Being local constant to the
>>> method seems good.
>>>
>>> On Thu, Oct 27, 2016 at 9:42 PM, Sagara Gunathunga <[email protected]>
>>> wrote:
>>>
>>>>
>>>> Personally I don't have strong preference on one style over other, what
>>>> mostly important for me is maintain one style consistently within the
>>>> product and if possible across the company.
>>>>
>>>> I'm adding few other people for their opinion.
>>>>
>>>> Thanks !
>>>>
>>>> On Thu, Oct 27, 2016 at 5:34 PM, Ruwan Abeykoon <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi Devs,
>>>>> We have been following a convention to put Database query string in a
>>>>> constant elsewhere in the code when performing DB CRUD operations.
>>>>>
>>>>> e.g.
>>>>>
>>>>> try {
>>>>>     String sqlStmt = 
>>>>> IdPManagementConstants.SQLQueries.GET_IDP_BY_NAME_SQL;
>>>>>     prepStmt = dbConnection.prepareStatement(sqlStmt);
>>>>>     prepStmt.setInt(1, tenantId);
>>>>>     prepStmt.setInt(2, MultitenantConstants.SUPER_TENANT_ID);
>>>>>     prepStmt.setString(3, idPName);
>>>>>     rs = prepStmt.executeQuery();
>>>>>
>>>>> ...
>>>>>
>>>>>
>>>>> However I would propose to keep the query in the same location as the SQL 
>>>>> parameter binding and result set reading. Shall we make it within local 
>>>>> final variable(constant) in  the method itself.
>>>>>
>>>>> The advantage is that the Query is visible on the same screen as it is 
>>>>> being used. This reduces number of screen flips. Also remembering the 
>>>>> query at somewhere else is error prone.
>>>>>
>>>>> This also help easy review and do query optimizations.
>>>>>
>>>>>
>>>>> e.g.
>>>>>
>>>>> final String INSERT_IDP_SQL = "INSERT INTO IDP (NAME, DISPLAY_NAME, 
>>>>> DESCRIPTION) VALUES(?,?,?)";
>>>>>
>>>>> this.jdbcTemplate.executeUpdate(INSERT_IDP_SQL, (preparedStatement, bean) 
>>>>> -> {
>>>>>     MetaIdentityProvider metaIdentityProvider = 
>>>>> identityProvider.getMetaIdentityProvider();
>>>>>     preparedStatement.setString(1, metaIdentityProvider.getName());
>>>>>     preparedStatement.setString(2, metaIdentityProvider.getDisplayName());
>>>>>     preparedStatement.setString(3, metaIdentityProvider.getDescription());
>>>>>
>>>>> ...
>>>>>
>>>>>
>>>>> Please note that they are the same in terms of memory use and
>>>>> performance wise as compiler make them constants.
>>>>> Putting them as constants serve no purpose as the query will never be
>>>>> reused in proper designed Data Access layer. We should reuse the code, not
>>>>> the query.
>>>>>
>>>>> WDYT?
>>>>>
>>>>> --
>>>>>
>>>>> *Ruwan Abeykoon*
>>>>> *Associate Director/Architect**,*
>>>>> *WSO2, Inc. http://wso2.com <https://wso2.com/signature> *
>>>>> *lean.enterprise.middleware.*
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Sagara Gunathunga
>>>>
>>>> Associate Director / Architect; WSO2, Inc.;  http://wso2.com
>>>> V.P Apache Web Services;    http://ws.apache.org/
>>>> Linkedin; http://www.linkedin.com/in/ssagara
>>>> Blog ;  http://ssagara.blogspot.com
>>>>
>>>>
>>>
>>>
>>> --
>>> S.Uthaiyashankar
>>> VP Engineering
>>> WSO2 Inc.
>>> http://wso2.com/ - "lean . enterprise . middleware"
>>>
>>> Phone: +94 774895474
>>>
>>
>
>
> --
> *Afkham Azeez*
> Director of Architecture; WSO2, Inc.; http://wso2.com
> Member; Apache Software Foundation; http://www.apache.org/
> * <http://www.apache.org/>*
> *email: **[email protected]* <[email protected]>
> * cell: +94 77 3320919 <%2B94%2077%203320919>blog: *
> *http://blog.afkham.org* <http://blog.afkham.org>
> *twitter: **http://twitter.com/afkham_azeez*
> <http://twitter.com/afkham_azeez>
> *linked-in: **http://lk.linkedin.com/in/afkhamazeez
> <http://lk.linkedin.com/in/afkhamazeez>*
>
> *Lean . Enterprise . Middleware*
>
> _______________________________________________
> Dev mailing list
> [email protected]
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
Rajith Roshan
Software Engineer, WSO2 Inc.
Mobile: +94-72-642-8350 <%2B94-71-554-8430>
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to